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文件解析):

  

 

 

 关键字参数之模板反向解析

 

 

反向解析之关键字、位置参数

 

 

关键字参数之模板反向解析:

posted @   强仔必胜  阅读(207)  评论(0编辑  收藏  举报
编辑推荐:
· 基于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最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示