Django

  • urls.py 网址入口,关联到对应的views.py中的一个函数,访问网址就对应一个函数

  • views.py 处理用户发出的请求,从urls.py中对应过来,通过渲染templates中的网页可以将显示内容,比如登录后的用户名,用户请求的数据,输出到网页

  • models.py 与数据库相关,存入或读取数据时用到

  • forms.py 表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作

    templates文件夹 views.py中的函数渲染templates中的HTML模板,得到动态内容的网页,也可以用缓存来提高速度

  • admin.py 后台,很少的代码即可拥有一个强大的后台

  • settings.py 的设置,配置文件

Django基本命令

新建一个django project

1
django-admin.py startproject_name

新建app

先进入项目目录下,然后执行以下命令

1
python manage.py startapp app_name

创建数据库表或更改数据库表或字段

1
2
3
4
# 创建更改的文件
python manage.py makemigrations
# 将生成的py文件应用到数据库
python manage.py migrate

使用开发服务器

1
python manage.py runserver

清空数据库

1
python manage.py flush

创建超级管理员

1
2
3
python mamage.py createsuperuser
# 修改用户密码
python manage.py changepassword username

Django视图和网址

  • 新建项目 FlightSystem

    1
    python manage.py startproject FlightSystem
    1
    2
    3
    4
    5
    6
    7
    FlightSystem
    ├── manage.py
    └── FightSystem
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

    注:在项目FightSystem下有一个子目录FightSystem;在子目录下有项目的设置文件setting.py,总的urls配置文件urls.py,还有部署到服务器的wsgi.py,__init__.py是python包的目录结构必须的,与调用有关

  • 创建数据库

    1
    python manage.py migrate
  • 新建一个应用app

    1
    python manage.py startapp flight_book

    注:新建的应用是在外层的那个目录下创建的

    1
    2
    3
    4
    5
    6
    7
    8
    9
    flight_book
    ├── __init__.py
    ├── admin.py 后台相关的设置
    ├── apps.py app相关的设置文件
    ├── migrations 数据库变更相关
    │ └── __init__.py
    ├── models.py 数据库模型相关
    ├── tests.py 单元测试
    └── views.py 视图逻辑
  • 然后将新定义的app添加到settings.py中的install_apps中,如下所示

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # Application definition

    INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 新建了一个应用flight_book
    'flight_book', # 新增添的一行
    ]

注:如果不填加的话,django就不能自动找到app中的模板文件(app-name/templates/下的文件)和静态文件(app-name/static/中的文件)

定义视图函数

就是访问页面时的内容

在应用层flight_book这个目录下,打开views.py

1
2
3
4
5
from django.http import HttpResponse


def index(request):
return HttpResponse("欢迎来到民航售票系统!")

注:第一行引入HttpResponse,它是用来向网页返回内容的,就像Python中的 print 一样,只不过 HttpResponse 是把内容显示到网页上;定义了index()函数,第一个参数参数必须是request,与网页发来的请求有关,request变量里面包含get或post的内容,用户浏览器,系统等信息在里面;函数返回一个HttpResponse对象,最终在网页上会显示出来

关键是我们访问什么网址才能看到刚刚写的那个函数呢?怎么让网址和函数关联起来呢?

定义视图函数相关的URL

打开FlightSystem/FlightSystem/urls.py

1
2
3
4
5
6
7
8
from django.contrib import admin
from django.urls import path
from flightbook import views as flightbook_views # new

urlpatterns = [
path("", flightbook_views.index), # new
path('admin/', admin.site.urls),
]