Django
此文档基于Django3.0
简介
django是一个基于python的开源web框架,旨在简化开发者开发过程,使得开发起来快速简洁。采用了MVT软件设计模式(Model模型、View视图、Template模板)
这里MTV模型
Template呈现给用户,用户通过Template发送请求给View,View获取Model的数据并将数据反馈给Template,Template接着渲染给用户。很像MVC。
下面快速上手一个Django项目
python的安装和django库的安装忽略
创建项目
- 使用命令,进入想要放置项目的地方,输入以下命令创建名为demo项目
django-admin startproject demo
- 使用pycharm
这里注意创建项目或后面的应用名称不要使用python、django内建模块、关键字等
目录
创建完毕可以看到项目结构如下
|-- demo
|-- manage.py
|-- demo
|-- __init__.py
|-- settings.py
|-- urls.py
|-- wsgi.py
|-- asgi.py #pycharm创建时无此项
|-- templates #命令创建无此项,可自行创建
- manage.py作用与django-admin作用一样,并且只作用于你的项目,django-admin可以进入命令行状态输入django-admin help查看用法
- settings.py是项目配置文件,包含所有配置项
- urls.py是项目的URL声明处,url和视图在这里进行映射,访问对应url就能得到相应视图,下面URL调度器会详细讲解
- wsgi.py作为你的项目运行在wsgi兼容的服务器上的入口
- templates目录存放模板,在Django中视图的概念是一类具有相同功能和模板的网页集合,如果我们使用python代码编写页面,那么就不能复用并且想要修改内容必须更改代码,所以使用模板将页面从代码中分离。简而言之就是在templates存放各个模板网页,其中数据通过后端代码传递。(MTV中的Templates)
启动项目
命令模式,进入项目目录
python manager.pu runserver
Pycharm可以直接使用UI按钮。
至此,就可以直接运行这个项目,就能在http://127.0.0.1:8000/看到Django提供的默认视图
数据库配置
Django对许多数据库都有很好的支持,如MySQL、postgresql等,其提供了同意接口。这里就先对mysql进行讲解。首先需要安装mysql,其次安装mysql的python驱动
pip install mysqlclient
然后在项目配置中修改Databases配置项
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django
'NAME': 'xxx',
'USER': 'root',
'PASSWORD': 'xxx',
'HOST': 'localhost',
'PORT': '3306',
}
}
许多默认应用都依赖于至少一个数据表,所以在配置完数据库中需要创建一些表。
python manage.py migrate
这个命令会找寻settings中的INSTALLED_APPS列表中的所有应用,并创建必要的数据表信息以及迁移,如下图由于没有创建新的应用,所以只迁移了默认的数据表
可以进入mysql查看迁移结果
配置完数据库,接下来可以使用模型了,模型必须要在应用中使用,不过在使用应用前我们可以先创建一个Django自带管理工具
管理工具
由于Django为了方便开发者进行开发,于是其为我们省略了许多例如对用户增删改查的繁琐工作,其全自动的根据模型创建后台界面,也就是管理界面。管理工具也是项目中的一个应用,他是面向管理者准备的
- 首先我们需要激活这个应用。去掉urls.py中的注释
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
如上图,由于前面我们知道url是负责映射url和视图的,那么我们运行项目后就可以通过’admin/'找到控制面板。此时访问http://127.0.0.1:8000/admin会发现需要输入用户名密码,下面创建管理员的用户名密码
- 创建管理员账号,进入命令界面
python manage.py createsuperuser
接着输入其需要的信息
Username: xxx
Email address: xxx
Password: xxx
然后大功告成,启动项目进入http://127.0.0.1:8000/admin
后面可以在应用中将模型注册到管理工具中,这样我们在管理界面就可以对应用的模型进行增删改了。
创建应用
在一个项目中,可以包含多个应用,比如一个博客系统的项目就能包含博客、论坛等应用,在Django中每个应用都是一个Python包,也就是带有__ init __.py的文件的目录,我们可以在项目中按需创建新的应用
命令模式
django-admin startapp article
或者使用
python manager.py startapp article
Pycharm手动创建麻烦,使用
能看到新的应用目录为
|-- article
|-- migrations/
|-- templates/ #自行新建
|-- __init__.py
|-- admin.py
|-- apps.py
|-- models.py
|-- urls.py #需新建
|-- tests.py
|-- views.py
- migrations目录,放置迁移代码(也就是定义数据表结构的地方),都是自动生成的
- views.py存放MTV中的视图模型,在这里将数据整合到模板
- admin.py是Django管理界面,可以在此将模型注册到管理工具中
- test.py 编写测试用例的地方
创建应用后,需要在项目settings.py文件中安装应用。
INSTALLED_APPS = [
'django.contrib.admin',
...
'article', #这里添加你的应用
]
模型
提了这么多次模型,模型是什么呢,可以理解为类,而每个类对应与数据库中的一张或多张表。所以模型也就是数据库结构设计和附加的其它元数据。
模型是真实数据的简单明确的描述。它包含了储存的数据所必要的字段和行为
创建模型
我们进入到应用的models.py中编写,根据自己需求编写,这里简单就写个文章类包含文章内容、文章题目、发布时间以及作者类包含作者名字。事实上,存储文章内容可以使用其他类型的数据库。
我们使用的模型类都要继承自django.db.models.Model,每个模型类都跟可以有一些变量和方法,变量就代表数据库中的一个字段。而具体字段类型可以去Django官网查看。注意到下面Article类中有ForeignKey字段,很明显是外键的意思。
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=