django

image

1- Django

Django 是一个功能强大的 Python Web 框架,适合快速开发和简化复杂的 Web 应用程序。

1- 一、环境准备

2- 1. 安装 Python

首先,你需要安装 Python。可以从 Python 官网 下载最新版本的 Python 安装包,并按照提示进行安装。安装完成后,确保 Python 已正确安装,可以在命令行中输入以下命令检查版本:

python --version

3- 2. 安装 Django

使用 pip 安装 Django。打开命令行,输入以下命令:

pip install django

安装完成后,可以通过以下命令检查 Django 是否安装成功:

django-admin --version

4- 二、创建 Django 项目

5- 1. 创建项目

使用 django-admin 命令创建一个新的 Django 项目。例如,我们创建一个名为 myproject 的项目:

django-admin startproject myproject

这将创建一个包含以下文件和目录的项目结构:

myproject/
    manage.py
    myproject/
        __init__.py
        settings.py
        urls.py
        wsgi.py

6- 2. 运行开发服务器

进入项目目录并启动开发服务器:

cd myproject
python manage.py runserver

在浏览器中访问 http://127.0.0.1:8000/,如果看到 Django 的欢迎页面,说明项目创建成功。

7- 三、创建应用

8- 1. 创建应用

在 Django 中,应用是一个功能模块。使用 startapp 命令创建一个新的应用。例如,我们创建一个名为 blog 的应用:

python manage.py startapp blog

这将创建一个包含以下文件和目录的应用结构:

blog/
    __init__.py
    admin.py
    apps.py
    models.py
    tests.py
    views.py

9- 2. 注册应用

myproject/settings.py 文件中,将新创建的应用添加到 INSTALLED_APPS 列表中:

INSTALLED_APPS = [
    ...
    'blog',
]

10- 四、定义模型

11- 1. 创建模型

blog/models.py 文件中定义数据模型。例如,我们创建一个简单的博客文章模型:

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200, db_index=True)  # 标题字段,最大长度200字符,并添加索引以提高查询速度
    content = models.TextField()  # 内容字段,存储大段文本
    created_at = models.DateTimeField(auto_now_add=True)  # 创建时间字段,自动设置为当前时间

    def __str__(self):
        return self.title  # 返回文章标题作为字符串表示

12- 2. 迁移数据库

运行以下命令生成并应用数据库迁移:

python manage.py makemigrations
python manage.py migrate

13- 五、创建管理界面

14- 1. 注册模型

blog/admin.py 文件中注册模型,以便在 Django 管理界面中管理它们:

from django.contrib import admin
from .models import Post

admin.site.register(Post)  # 注册 Post 模型

15- 2. 创建超级用户

运行以下命令创建一个超级用户:

python manage.py createsuperuser

按照提示输入用户名、邮箱和密码。

16- 3. 访问管理界面

启动开发服务器并访问 http://127.0.0.1:8000/admin/,使用刚创建的超级用户登录。你将看到博客文章模型已经出现在管理界面中。

17- 六、创建视图和模板

18- 1. 创建视图

blog/views.py 文件中创建视图函数。例如,我们创建一个显示所有博客文章的视图:

from django.shortcuts import render
from .models import Post

def post_list(request):
    posts = Post.objects.all()  # 获取所有博客文章
    return render(request, 'blog/post_list.html', {'posts': posts})  # 渲染模板并传递文章数据

19- 2. 配置 URL

blog/urls.py 文件中配置 URL 模式:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),  # 配置根 URL 映射到 post_list 视图
]

myproject/urls.py 文件中包含应用的 URL 配置:

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

urlpatterns = [
    path('admin/', admin.site.urls),  # 管理界面 URL
    path('', include('blog.urls')),  # 包含 blog 应用的 URL 配置
]

20- 3. 创建模板

blog 目录下创建一个名为 templates 的目录,并在其中创建一个名为 blog 的子目录。在 blog/templates/blog/ 目录中创建一个名为 post_list.html 的模板文件:

<!DOCTYPE html>
<html>
<head>
    <title>Blog</title>
</head>
<body>
    <h1>Blog Posts</h1>
    <ul>
        {% for post in posts %}
            <li>{{ post.title }} - {{ post.created_at }}</li>
        {% endfor %}
    </ul>
</body>
</html>

21- 七、增加用户注册功能

22- 1. 创建用户模型

models.py 中定义用户模型:

from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    pass

23- 2. 创建用户注册视图

views.py 中创建用户注册视图:

from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm

def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('login')
    else:
        form = UserCreationForm()
    return render(request, 'registration/register.html', {'form': form})

24- 3. 配置 URL

urls.py 中配置 URL 模式:

from django.urls import path
from . import views

urlpatterns = [
    path('register/', views.register, name='register'),
]

25- 4. 创建模板

templates/registration/ 目录中创建 register.html 模板:

<!DOCTYPE html>
<html>
<head>
    <title>Register</title>
</head>
<body>
    <h1>Register</h1>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Register</button>
    </form>
</body>
</html>

26- 八、总结

通过以上步骤,你已经创建了一个简单的 Django 项目,并实现了基本的博客功能和用户注册功能。你可以继续扩展项目,添加更多功能,如用户登录、评论系统等。Django 提供了丰富的文档和社区资源,帮助你解决开发过程中遇到的问题。希望这个详细教程能帮助你更好地掌握 Django。

27- 图表和注释

为了更好地理解 Django 的工作流程,我们可以使用图表进行说明。

28- Django 项目结构图

myproject/
├── manage.py
├── myproject/
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── blog/
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── models.py
    ├── tests.py
    └── views.py

29- Django 请求处理流程图

用户请求 (HTTP Request)
        |
        v
URL 路由 (urls.py)
        |
        v
视图函数 (views.py)
        |
        v
模型 (models.py) <-> 数据库
        |
        v
模板 (templates)
        |
        v
HTTP 响应 (HTTP Response)

30- 常见问题解答(FAQ)

Q1: 为什么我在运行 python manage.py runserver 时遇到错误?

A1: 请确保你已经在项目目录中运行该命令,并且已经安装了所有必要的依赖项。如果问题仍然存在,请检查错误信息并搜索相关解决方案。

Q2: 如何添加新的应用到我的 Django 项目?

A2: 使用 python manage.py startapp <app_name> 命令创建新的应用,然后在 settings.py 文件中的 INSTALLED_APPS 列表中添加该应用。

31- 练习和项目

32- 练习

  1. 创建一个新的 Django 应用,名为 todo,并实现一个简单的待办事项列表功能。
  2. 为博客应用添加评论功能,允许用户在每篇