Django之路由系统
urls
正则表达式
传值方式
传值方式之一:
1:模板传递/edit_book/?id={{obj.id} 2:url接收: url(r'^book_edit/', views.edit), 3: views.py: def edit(request): request.GET.get('id')
传值方式之二分组:
分组传值方式之一位置参数:
模板文件:
<form action="/author_edit/{{ obj.id }}" method="post">
urlpatterns = [ url(r'^articles/2003/$', views.special_case_2003), url(r'^articles/([0-9]{4})/$', views.year_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail), ] url(r'^articles/2003/$', views.special_case_2003) 传递一个固定的四位数字 url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive), 传递两个四位数字 url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', 传递两个以上的参数
注释:
url(r'^articles/后的一个括号表示一个分组,在浏览器里表示一个参数
url字典传值方式
模板文件:
<form action="/author_edit/{{ obj.id }}" method="post">
urls.py文件:(命名分组,{'foo':'bar'}在urls里填写字典形式)
from django.conf.urls import url from . import views
urlpatterns = [ url(r'^blog/(?P<year>[0-9]{4})/$', views.year_archive, {'foo': 'bar'}), ] 传递两个值 /(?P<year>[0-9]{4})传递一个值 {'foo': 'bar'}:传递一个键为foo,值为bar的值
views.py:
def author_edit(request,year): 此处必须为id
if request.method == 'POST':
Author_name = request.POST.get('Author_name')
birthday = request.POST.get('birthday')
命名关键字形式(位置参数接收后命名即是关键字形式)
模板文件:
<form action="/author_edit/{{ obj.id }}" method="post">
views.py文件:
urlpatterns = [ url(r'^articles/2003/$', views.special_case_2003), url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive), url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive), url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail), ] url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive) 匹配一个四位数字取个别名year传递给year_archive函数
views.py文件:
def author_edit(request,year): 此处必须为year
if request.method == 'POST':
Author_name = request.POST.get('Author_name')
birthday = request.POST.get('birthday')
注意点:位置参数与关键字参数不能同时使用否则位置参数接收不到值
例如:url(r'^articles/([0-9]{4})/(?P<year>[0-9]{4})/$', views.year_archive)
URL分发:
由于url里的文件过多,需要根据不同的APP分发到不同的app下的app urls.py里实现管理
反向解析
views.py反向解析:
命名空间的分发
由于不同APP的url 与name别名可能相同,所以命名空间应运而生
templates(html文件解析):
关键字参数之模板反向解析
反向解析之关键字、位置参数
关键字参数之模板反向解析:
撸起袖子加油干!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通