django系列-路由系统

一、传统路由(path)

# urls.py
from django.contrib import admin
from django.urls import path
from apps.web import views

urlpatterns = [
    path('home/', views.home),
    path('news/<int:nid>/edit/', views.news),
    path('article/', views.article),
]
int,整数
str,字符串   /
slug,字母+数字+下滑线+-
uuid,uuid格式
path,路径,可以包含 /

对应视图函数

# views.py
from django.shortcuts import render, HttpResponse


def home(request):
    return HttpResponse("成功")


def news(request, nid):
    print(nid)
    page = request.GET.get("page")
    return HttpResponse("新闻")


def article(request):
    nid = request.GET.get("nid")
    print(nid)
    return HttpResponse("文章")

 

二、正则表达式路由(re_path)

# urls.py
from django.contrib import admin
from django.urls import path, re_path  
from apps.web import views

urlpatterns = [
    re_path(r'users/(?P<xxid>\w+-\d+)/(?P<yid>\d+)/', views.users),
]

对应视图函数

# views.py
from django.shortcuts import render, HttpResponse


def users(request, xxid, yid):
    return HttpResponse("成功")

 

三、路由分发(include或手动分发)

文件结构

projectA #项目
  -apps  #apps
    -user #app
      -views.py
      -urls.py
    -manager #app
      -views.py
      -urls.py
  -projectA #项目文件
    -settings.py
    -urls.py

urls.py 总url文件

from django.urls import path, include
from app1 import views


urlpattrens = {
  path("admin/", views.admin), #无分发
  path("user/", include("apps.app1.urls")), #分发到apps/app/urls文件
}

apps/app/urls.py  各app的url

from django.urls import path
from apps.user import views


urlpatterns = {
  # 实际路由 /user/index
  path("index/", views.index),
}
未完待续

posted @ 2023-05-15 19:17  王里冲  阅读(25)  评论(0)    收藏  举报