全局安装框架

pip install Django

创建项目

django-admin startproject mysite

启动项目

py manage.py runserver

此时,你会看到终端有报错信息,是因为我们暂时还没有涉及到数据库,可以不用管它。接着打开浏览器访问:http://127.0.0.1:8000/

你会看到框架加载出来的欢迎页面。

创建一个简单的投票应用

py manage.py startapp polls

运行玩上面的命令,将会在我们的项目中创建一个 polls 目录,它的目录结构大致如下:

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

这个目录结构包括了投票应用的全部内容。

编写视图

打开 polls/views.py,写上如下代码:

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

polls目录里新建一个 urls.py 文件,在里面输入如下代码:

from django.urls import path

from . import views

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

blog/urls.py 文件的 urlpatterns 列表里插入一个 include(), 如下:

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

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

其实这里的 admin 暂时并没什么用,后期实战会用到。终端重新启动项目:

py manage.py runserver

浏览器访问:http://127.0.0.1:8000/polls/,你会看到如下图所示:

配置数据库

由于我们用的是MySQL数据库,所以先执行下面的命令安装 mysql 的扩展:

pip install mysqlclient

mysite/mysite/settings.py 文件的 DATABASES 中,修改数据库配置代码如下:

'default': {
    'ENGINE': 'django.db.backends.mysql',
    # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

    'NAME': 'mysite',
    'USER': 'root',
    'PASSWORD': 'root',
    'HOST': '127.0.0.1',
    'PORT': '3306',
}

手动创建一个 mysite 数据库,并运行数据库迁移命令:py manage.py migrate,执行完后,查看数据库,发现多了很多表

创建模型

在这个简单的投票应用中,需要创建两个模型:问题 Question 和选项 ChoiceQuestion 模型包括问题描述和发布时间。Choice 模型有两个字段,选项描述和当前得票数。每个选项属于一个问题。

编辑 polls/models.py 文件,代码如下:

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)

激活模型

在文件mysite/settings.pyINSTALLED_APPS子项添加点式路径,代码如下:

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

创建投票表迁移文件:

py manage.py makemigrations polls

此命令会在 polls/migrations/ 创建文件 0001_initial.py,接下来运行如下命令:

py manage.py sqlmigrate polls 0001

这个命令是把模型输出重组成了人类可读的格式,再次运行数据库迁移命令:

py manage.py migrate

查看数据库,我们发现你想要的两张表结构已生成!