目录
创建项目
- 创建项目
diango-admin startproject my_project/项目名称
- 创建子应用
python3 manage.py startapp app01/子应用名称
目录结构
- 目录介绍
│─ manage.py # 终端脚本命令,提供了一系列用于生成文件或者目录的命令,也叫脚手架 └─ my_project/ # 主应用开发目录,创建项目时自动创建 │- asgi.py # django3.0以后新增,用于异步处理 │- settings.py # 默认配置文件 │- urls.py # 用于绑定视图和URL的映射关系,路由列表 │- wsgi.py └- __init__.py └─ app01 # 子应用 │- models # 用于数据库操作 │- views # 视图 │- tests # 单元测试模块 │- apps # 子应用的一些配置,自动生成 │- admin.py # 应用的后台管理系统配置
路由分发
- 第一种映射绑定
from django.urls import path from app01.views import timer # 导入视图函数 urlpatterns = [ path("timer/",timer),# 绑定视图函数 # 多对一,一对多不允许 path("index/",index), path("index2/",index), ]
- 路由分发
- 全局urls.py
from django.urls import path,include urlpatterns = [ path("app01/",include("app01.urls")) # 使用include指向子应用的urls.py,默认子应用没有urls.py文件,创建一个即可 ]
- 子应用的urls.py
from django.urls import path from app01.views import timer urlpatterns = [ path("timer/",timer), # 在子应用的urls.py里面正常绑定就行 ,访问的时候加上app01,如: http://ip:port/app01/timer ]
- 全局urls.py
路由分组
-
普通分组
- URL绑定
from django.urls import path,re_path #导入re_path urlpatterns = [ re_path("articles/(\d{4})/(\d{2})",article_archive), # re_path是可以使用正则匹配,将上括号代表实参传给视图函数, # 也就是说第一个括号匹配出来的内容作为article_archive视图函数的的第一个参数, # 第二个括号匹配出来的内容作为article_archive视图函数的的第二个参数, # 位子传参 ]
- 视图函数
def article_archive(request,year,month): # year接收路由第一个()匹配的内容,month接收路由里面的第二个括号匹配出来的内容, 位子传参 return HttpResponse(f"{year}年{month}月")
- URL绑定
-
有名分组
- URL绑定
from django.urls import path,re_path #导入re_path urlpatterns = [ re_path("articles/(?P<year>\d{4})/(?P<month>\d{1,2})",article_archive), # 按照关键字传参 ]
- 视图函数
def article_archive(request,year,month): # year接收路由year匹配的内容,month接收路由里面的month匹配出来的内容,关键字传参 return HttpResponse(f"{year}年{month}月")
- URL绑定