编写第一个 Django 应用
首先查看djiango是否成功安装
python -m django --version
第一部分:创建项目
创建项目文件
进入任意一个目录,在命令行运行
django-admin startproject mysite
这行代码将会在当前目录下创建一个 mysite
目录,目录结构如下
mysite/ manage.py mysite/ __init__.py settings.py urls.py asgi.py wsgi.py
查看服务器是否创建成功
命令行运行
python manage.py runserver
显示 Starting development server at http://127.0.0.1:8000/为创建成功
或带上端口号 python manage.py runserver 0.0.0.0:8000
创建应用
在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定。Django 自带一个工具,可以帮你生成应用的基础目录结构,这样你就能专心写代码,而不是创建目录了。
python manage.py startapp polls
编写第一个视图
在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"),
]
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
path(route: str, view: HttpRequest, kwargs: dict, name: str)
第二部分:设置
语言时区
打开mysite/settings.py 修改
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
数据库配置
打开mysite/settings.py 修改 DATABASES["default"]["ENGINE"] 可选值有{'django.db.backends.sqlite3'
,'django.db.backends.postgresql'
,'django.db.backends.mysql'
,'django.db.backends.oracle'
}
举例:
"default": { "ENGINE": "django.db.backends.postgresql", "NAME": "mydatabase", )。 "USER": "mydatabaseuser", "PASSWORD": "mypassword", "HOST": "127.0.0.1"," "PORT": "5432", }
构建数据表
python manage.py migrate
运行代码后,python会根据settings.py中的设置,创建必要的数据库表
运行你的数据库的命令行客户端,输入 \dt
(PostgreSQL), SHOW TABLES;
(MariaDB,MySQL), .tables
(SQLite)或 SELECT TABLE_NAME FROM USER_TABLES;
(Oracle)来显示 Django 创建的表
创建模型(建表)
这一步简单来讲就是设计表->创建表
在这个投票应用中,需要创建两个模型:问题 Question
和选项 Choice
。Question
模型包括问题描述和发布时间。Choice
模型有两个字段,选项描述和当前得票数。每个选项属于一个问题。
这些概念可以通过一个 Python 类来描述。按照下面的例子来编辑 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)
每个类表示一个数据表,每个类变量表示该数据表中的一个字段,models.xxxxField()表示该字段的数据类型
Django三种模型关系(一对一,一对多,多对多)
{OneToOneField,ForeignField, ManyToManyField}
on_delete 参数为删除时是否级联删除,参数范围如下
{CASCADE,PROTECT,SET_NULL,SET_DEFAULT,SET()}
作用如下:
{级联删除,删除报错,设空,设默认,设为括号内值}
激活模型
为了在我们的工程中包含这个应用,我们需要在配置类 INSTALLED_APPS 中添加设置。因为 PollsConfig
类写在文件 polls/apps.py
中,所以它的点式路径 'polls.apps.PollsConfig'
。
得到迁移数据
接着运行下面的命令:
python manage.py makemigrations polls
会得到一个文件:polls/migrations/0001_initial.py 模型定义(数据结构)的迁移数据
查看要执行的SQL语句
该命令可以看到迁移命令会执行哪些 SQL 语句
python manage.py sqlmigrate polls 0001
执行迁移
models.py的修改将同步到数据库中(更新数据库结构)
再次运行 migrate 命令,在数据库里创建新定义的模型的数据表:
python manage.py migrate
Django 管理页面
创建管理账号
首先,我们得创建一个能登录管理页面的用户。请运行下面的命令 并根据提示输入信息
python manage.py createsuperuser
向管理页面中加入投票应用
打开 polls/admin.py
文件,把它编辑成下面这样
from django.contrib import admin
from .models import Question
from .models import Choice
admin.site.register(Question)
admin.site.register(Choice)
进入管理站点
python manage.py runserver
进入 127.0.0.1:8000/admin/ 输入账号密码 即可看到管理界面