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 @   王里冲  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示