安装 Django
确保 Python 已安装(推荐 3.8+ 版本),通过以下命令安装 Django:
pip install django
创建项目
使用 django-admin 创建新项目(例如 djangotutorial):
django-admin startproject mysite
目录结构如下:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
启动开发服务器
进入项目目录并运行:
python manage.py runserver
访问 http://127.0.0.1:8000/ 确认服务正常。
创建应用
在项目中创建应用(例如 polls):
python manage.py startapp polls
目录将新增 polls/,包含 views.py、models.py 等文件。
编写视图
编辑 polls/views.py,添加简单视图:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
配置 URL
在 polls 目录下创建 urls.py,定义路由:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
在项目 mysite/urls.py 中引入应用路由:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
测试运行
重启开发服务器,访问 http://127.0.0.1:8000/polls/,页面应显示 Hello, world.。
数据库配置
编辑 mysite/settings.py,配置 DATABASES(默认使用 SQLite)。执行迁移:
python manage.py migrate
创建模型
在 polls/models.py 中定义模型(例如 Question 和 Choice):
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
激活模型
在 settings.py 的 INSTALLED_APPS 中添加 'polls.apps.PollsConfig'。生成迁移文件并应用:
python manage.py makemigrations polls
python manage.py migrate
管理界面
创建超级用户:
python manage.py createsuperuser
访问 http://127.0.0.1:8000/admin/ 登录,在 admin.py 中注册模型以管理数据。
向管理页面中加入投票应用
打开 polls/admin.py 文件,编辑如下:
from django.contrib import admin
from .models import Question
admin.site.register(Question)
写一个有用的视图
修改 index() 函数,让它能展示数据库里以发布日期排序的最近 5 个投票问题。
首先,在你的 polls 目录里创建一个 templates 目录。Django 将会在这个目录里查找模板文件。
在你刚刚创建的 templates 目录里,再创建一个目录 polls,然后在其中新建一个文件 index.html。路径应为 polls/templates/polls/index.html。
编写一个简单的表单
更新投票详细页面的模板,让它包含一个 HTML <form> 元素。
使用通用视图系统
将我们的投票应用转换成使用通用视图系统,删除一些旧的、不再需要的视图,基于 Django 的通用视图引入新的视图。
编写自动化测试
发现 Bug
我们的 was_published_recently() 方法在 pub_date 字段比当前时间还晚时也会返回 True,这是一个 Bug。
创建测试
按照惯例,Django 应用的测试应该写在应用的 tests.py 文件里。
更全面的测试
增加更多测试来全面测试 was_published_recently() 这个方法。
测试视图
改善视图代码,如果 pub_date 设置为未来某天,这应该被解释为这个问题将在所填写的时间点才被发布,而在之前是不可见的。
自定义应用界面和风格
首先,在你的 polls 目录下创建一个名为 static 的目录。Django 将在该目录下查找静态文件。
在 static 文件夹中创建一个名为 polls 的文件夹,再在其中创建一个名为 style.css 的文件。
添加背景图
在 polls/static/polls/ 目录中创建 images 子目录,添加图像文件。
自定义后台表单
通过 admin.site.register(Question) 注册 Question 模型,Django 能够构建一个默认的表单用于展示。通常来说,你期望能自定义表单的外观和工作方式。你可以在注册模型时将这些设置告诉 Django。
添加关联的对象
一个 Question 有多个 Choice,需要在后台页显示多个选项。


