Django入门项目操作实例

发布时间:2021-06-26 10:08:29 作者:chen
来源:亿速云 阅读:140
# Django入门项目操作实例

## 前言

Django作为Python最流行的Web框架之一,以其"开箱即用"的特性和完善的文档体系深受开发者喜爱。本文将通过一个完整的博客系统开发实例,带您快速掌握Django的核心开发流程。

## 环境准备

### 1. 安装Python
确保系统已安装Python 3.6+:
```bash
python --version

2. 创建虚拟环境

python -m venv myenv
source myenv/bin/activate  # Linux/Mac
myenv\Scripts\activate  # Windows

3. 安装Django

pip install django

项目创建

1. 创建项目骨架

django-admin startproject myblog
cd myblog

项目结构说明:

myblog/
    manage.py
    myblog/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

2. 创建应用

python manage.py startapp blog

需在settings.py中注册应用:

INSTALLED_APPS = [
    ...
    'blog.apps.BlogConfig',
]

数据模型设计

1. 定义模型

编辑blog/models.py

from django.db import models
from django.contrib.auth.models import User

class Category(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True)

    def __str__(self):
        return self.title

2. 迁移数据库

python manage.py makemigrations
python manage.py migrate

后台管理配置

1. 创建超级用户

python manage.py createsuperuser

2. 注册模型

编辑blog/admin.py

from django.contrib import admin
from .models import Category, Post

admin.site.register(Category)
admin.site.register(Post)

访问http://127.0.0.1:8000/admin即可管理数据

视图与URL配置

1. 编写视图

编辑blog/views.py

from django.shortcuts import render, get_object_or_404
from .models import Post

def post_list(request):
    posts = Post.objects.all().order_by('-created_at')
    return render(request, 'blog/post_list.html', {'posts': posts})

def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    return render(request, 'blog/post_detail.html', {'post': post})

2. 配置URL

项目级URL(myblog/urls.py):

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
]

应用级URL(新建blog/urls.py):

from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),
    path('post/<int:pk>/', views.post_detail, name='post_detail'),
]

模板开发

1. 创建模板目录

blog/
    templates/
        blog/
            base.html
            post_list.html
            post_detail.html

2. 基础模板

base.html

<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}My Blog{% endblock %}</title>
</head>
<body>
    <header>
        <h1><a href="/">My Blog</a></h1>
    </header>
    <main>
        {% block content %}
        {% endblock %}
    </main>
</body>
</html>

3. 文章列表模板

post_list.html

{% extends 'blog/base.html' %}

{% block content %}
    {% for post in posts %}
        <article>
            <h2><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h2>
            <p>{{ post.content|truncatechars:200 }}</p>
            <time>Published: {{ post.created_at }}</time>
        </article>
    {% endfor %}
{% endblock %}

4. 文章详情模板

post_detail.html

{% extends 'blog/base.html' %}

{% block content %}
    <article>
        <h2>{{ post.title }}</h2>
        <p>{{ post.content }}</p>
        <time>Published: {{ post.created_at }}</time>
        {% if post.category %}
            <p>Category: {{ post.category.name }}</p>
        {% endif %}
    </article>
{% endblock %}

静态文件处理

1. 创建静态目录

blog/
    static/
        blog/
            style.css

2. 添加CSS样式

style.css

body {
    font-family: Arial, sans-serif;
    line-height: 1.6;
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
}

article {
    margin-bottom: 40px;
    padding-bottom: 20px;
    border-bottom: 1px solid #eee;
}

3. 加载静态文件

在模板头部添加:

{% load static %}
<link rel="stylesheet" href="{% static 'blog/style.css' %}">

运行与测试

1. 启动开发服务器

python manage.py runserver

2. 访问页面

扩展功能建议

  1. 用户认证:实现注册/登录功能
  2. 评论系统:允许用户对文章发表评论
  3. 分页功能:当文章数量较多时添加分页
  4. 搜索功能:按标题或内容搜索文章
  5. Markdown支持:让文章支持Markdown语法

总结

通过这个完整的博客系统实例,我们实践了Django开发的主要流程: 1. 项目创建与环境配置 2. 数据模型设计与迁移 3. 后台管理界面配置 4. 视图函数与URL路由 5. 模板系统与静态文件处理

Django的MTV模式(Model-Template-View)提供了清晰的代码组织方式,其丰富的内置功能可以显著提高开发效率。建议读者在此基础上继续探索Django的更多高级特性,如中间件、信号系统、缓存机制等。 “`

注:本文实际约1500字,通过调整示例代码的详细程度或扩展功能建议部分可精确控制字数。如需完整1550字版本,可适当增加以下内容: 1. 用户认证部分的详细实现 2. 分页功能的代码示例 3. Django调试技巧章节 4. 部署到生产环境的简要说明

推荐阅读:
  1. Django -- 安装入门
  2. Tensorflow 入门项目实例

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

django

上一篇:JavaScript中sort方法有什么用

下一篇:Javascript的加法运算符有什么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》