首页 > 其他分享 >Django 创建子应用、目录结构、路由分发

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

时间:2022-11-25 09:34:37浏览次数:42  
标签:分发 py 视图 Django app01 urls path 路由

目录

创建项目

  • 创建项目
    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
      ]
      

路由分组

  • 普通分组

    • 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<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}月")
      

标签:分发,py,视图,Django,app01,urls,path,路由
From: https://www.cnblogs.com/py-zhq/p/16923640.html

相关文章