Django 在线练习(深入浅出)

Django 在线练习入门指南

Django 是 Python 最流行的 Web 框架之一,掌握 Django 的最佳方式之一就是通过 Django 在线练习。本文将带你从零开始,快速了解如何构建一个简单的 Django 练习项目,并掌握其中关键知识点。

核心概念

Django 在线练习的核心在于通过实际项目操作,加深对框架的理解和使用。这类练习通常包括创建模型、设计视图、连接模板、配置 URL 等基本开发流程。

一个类比:就像学习游泳不能只看视频,Django 的学习必须通过动手写代码、调试、运行。通过 Django 在线练习,开发者可以熟悉 MVC(或 MVT)结构,提高开发效率。

基础语法

要开始 Django 在线练习,你首先需要掌握几个基础命令和模块的使用方式。

创建项目和应用

django-admin startproject mysite

cd mysite
python manage.py startapp practice_app

编写模型

practice_app/models.py 中定义一个简单的模型,例如一个“任务”模型:

from django.db import models

class Task(models.Model):
    title = models.CharField(max_length=200)  # 任务标题,最大长度 200
    completed = models.BooleanField(default=False)  # 是否完成,默认为 False
    created_at = models.DateTimeField(auto_now_add=True)  # 创建时间,自动添加

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

注册模型到管理后台

打开 practice_app/admin.py,添加如下代码,以便在 Django 管理后台中管理任务:

from django.contrib import admin
from .models import Task

admin.site.register(Task)  # 注册 Task 模型到后台管理

进阶特性

Django 的强大之处在于其丰富的功能模块,以下是几个进阶特性,适合在 Django 在线练习中进一步探索:

特性 说明 示例
类视图(Class-Based Views) 用类的方式编写视图,提高代码复用性 CreateView, UpdateView
模板继承 使用 {% extends %} 复用 HTML 布局 适合构建统一的网页风格
表单处理 使用 Django 表单处理用户输入 自动验证、渲染、绑定模型
REST API 集成 Django REST Framework,构建 API 服务 适合前后端分离项目

使用类视图处理任务创建

practice_app/views.py 中使用 CreateView

from django.views.generic.edit import CreateView
from .models import Task

class TaskCreateView(CreateView):
    model = Task  # 使用的模型
    fields = ['title']  # 表单中显示的字段
    template_name = 'task_form.html'  # 使用的模板
    success_url = '/'  # 成功后跳转的页面

使用模板继承

practice_app/templates/base.html 中创建一个基础模板:

<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}Django 在线练习{% endblock %}</title>
</head>
<body>
    <header>
        <h1>Django 在线练习</h1>
    </header>
    <main>
        {% block content %}{% endblock %}
    </main>
</body>
</html>

然后在子模板中继承它:

{% extends "base.html" %}

{% block title %}新增任务{% endblock %}

{% block content %}
<h2>新增任务</h2>
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}  <!-- 自动渲染表单字段 -->
    <button type="submit">提交</button>
</form>
{% endblock %}

实战应用

创建任务列表页面

practice_app/views.py 中编写一个视图函数:

from django.shortcuts import render
from .models import Task

def task_list(request):
    tasks = Task.objects.all()  # 获取所有任务
    return render(request, 'task_list.html', {'tasks': tasks})  # 渲染模板

practice_app/templates/task_list.html 中展示任务:

{% extends "base.html" %}

{% block title %}任务列表{% endblock %}

{% block content %}
<h2>任务列表</h2>
<ul>
    {% for task in tasks %}
        <li>{{ task.title }} - {{ task.created_at }}</li>
    {% endfor %}
</ul>
{% endblock %}

配置 URL

practice_app/urls.py 中配置任务列表和创建的 URL:

from django.urls import path
from .views import task_list, TaskCreateView

urlpatterns = [
    path('', task_list, name='task_list'),  # 任务列表页面
    path('create/', TaskCreateView.as_view(), name='task_create'),  # 创建任务页面
]

别忘了在主项目的 urls.py 中包含这个应用的 URL:

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('practice/', include('practice_app.urls')),  # 包含练习应用的 URL
]

注意事项

在 Django 在线练习中,初学者容易遇到以下几个问题:

  1. 忘记迁移数据库:每次修改模型后,必须执行 python manage.py makemigrationspython manage.py migrate
  2. 模板路径错误:Django 会自动查找 app_name/templates/app_name/ 路径下的模板,建议按此结构存放。
  3. 忽略 CSRF 保护:使用表单时,必须添加 {% csrf_token %},否则提交会失败。
  4. URL 模式拼写错误:URL 路由配置一旦出错,页面将无法访问,建议用 python manage.py runserver 启动后访问查看错误日志。

总结

通过 Django 在线练习,你可以快速掌握从项目搭建、模型设计到视图和模板的完整开发流程。本文提供了基础命令和实战代码,适合初学者快速上手并加深理解。