Django 创建子应用、目录结构、路由分发()

  • 创建项目
  • 目录结构
  • 路由分发路由分组
  • 路由分组

创建项目

  • 创建项目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.pyfrom django.urls import path,include

    urlpatterns = [
    path(“app01/”,include(“app01.urls”)) # 使用include指向子应用的urls.py,默认子应用没有urls.py文件,创建一个即可
    ]

    子应用的urls.pyfrom django.urls import path
    from app01.views import timer

    urlpatterns = [
    path(“timer/”,timer), # 在子应用的urls.py里面正常绑定就行 ,访问的时候加上app01,如: http://ip:port/app01/timer
    ]

  • 全局urls.pyfrom django.urls import path,include

    urlpatterns = [
    path(“app01/”,include(“app01.urls”)) # 使用include指向子应用的urls.py,默认子应用没有urls.py文件,创建一个即可
    ]

  • 子应用的urls.pyfrom django.urls import path
    from app01.views import timer

    urlpatterns = [
    path(“timer/”,timer), # 在子应用的urls.py里面正常绑定就行 ,访问的时候加上app01,如: http://ip:port/app01/timer
    ]

路由分组

  • 普通分组

    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绑定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绑定from django.urls import path,re_path #导入re_path

    urlpatterns = [
    re_path(“articles/(?P\d{4})/(?P\d{1,2})”,article_archive), # 按照关键字传参
    ]

    视图函数 def article_archive(request,year,month): # year接收路由year匹配的内容,month接收路由里面的month匹配出来的内容,关键字传参
    return HttpResponse(f”{year}年{month}月”)

  • URL绑定from django.urls import path,re_path #导入re_path

    urlpatterns = [
    re_path(“articles/(?P\d{4})/(?P\d{1,2})”,article_archive), # 按照关键字传参
    ]

  • 视图函数 def article_archive(request,year,month): # year接收路由year匹配的内容,month接收路由里面的month匹配出来的内容,关键字传参
    return HttpResponse(f”{year}年{month}月”)

————————
  • 创建项目
  • 目录结构
  • 路由分发路由分组
  • 路由分组

创建项目

  • 创建项目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.pyfrom django.urls import path,include

    urlpatterns = [
    path(“app01/”,include(“app01.urls”)) # 使用include指向子应用的urls.py,默认子应用没有urls.py文件,创建一个即可
    ]

    子应用的urls.pyfrom django.urls import path
    from app01.views import timer

    urlpatterns = [
    path(“timer/”,timer), # 在子应用的urls.py里面正常绑定就行 ,访问的时候加上app01,如: http://ip:port/app01/timer
    ]

  • 全局urls.pyfrom django.urls import path,include

    urlpatterns = [
    path(“app01/”,include(“app01.urls”)) # 使用include指向子应用的urls.py,默认子应用没有urls.py文件,创建一个即可
    ]

  • 子应用的urls.pyfrom django.urls import path
    from app01.views import timer

    urlpatterns = [
    path(“timer/”,timer), # 在子应用的urls.py里面正常绑定就行 ,访问的时候加上app01,如: http://ip:port/app01/timer
    ]

路由分组

  • 普通分组

    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绑定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绑定from django.urls import path,re_path #导入re_path

    urlpatterns = [
    re_path(“articles/(?P\d{4})/(?P\d{1,2})”,article_archive), # 按照关键字传参
    ]

    视图函数 def article_archive(request,year,month): # year接收路由year匹配的内容,month接收路由里面的month匹配出来的内容,关键字传参
    return HttpResponse(f”{year}年{month}月”)

  • URL绑定from django.urls import path,re_path #导入re_path

    urlpatterns = [
    re_path(“articles/(?P\d{4})/(?P\d{1,2})”,article_archive), # 按照关键字传参
    ]

  • 视图函数 def article_archive(request,year,month): # year接收路由year匹配的内容,month接收路由里面的month匹配出来的内容,关键字传参
    return HttpResponse(f”{year}年{month}月”)