反向解析不带参数和带参数的URL模式

反向解析不带参数的URL模式

定义:
随着功能的增加会出现更多的视图,可能之前配置的正则表达式不够准确,于是就要修改正则表达式,但是正则表达式一旦修
改了,之前所有对应的超链接都要修改,真是一件麻烦的事情,而且可能还会漏掉一些超链接忘记修改,此时就需要反向解析
的办法。
url反向解析:根据url路由规则,动态生成对应的url链接(防止硬编码)


反向解析不带参数的URL模式

views.py文件
from django.urls import HttpResponse
from django.urls import reverse

def getReverse(request):
    return HttpResponse('反向解析请求的url路径为:%s' %reverse('urlReverse')) #reverse()的参数就是urls中定义的name值
    

urls.py文件
from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('reverse/abc',views.getReverse,name='urlReverse'),
    path('root/',include('myapp.urls')),
]
    
反向解析不带参数的URL模式.png

反向解析带参数的URL模式

如果URL模式使用了参数,在使用reverse()执行反向解析时,则可以使用命名参数args或kwargs设置反向解析参数,
格式如下:
reverse("URL模式名称", args=[参数列表])
reverse("URL模式名称", kwargs={参数字典})


反向解析带参数的URL模式
views.py文件
from django.urls import HttpResponse
from django.urls import reverse
#带列表参数的反向解析
def getReverse2(request,data):
    return HttpResponse('反向解析列表参数请求的url路径为:%s' %reverse('urlReverse2',args=[data]))
    

#带字典参数的反向解析
def getReverse3(request,data):
    return HttpResponse('反向解析字典参数请求的url路径为:%s' %reverse('urlReverse3',kwargs={"data":data}))
    
    

urls.py文件
from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('reverse3/<data>', views.getReverse3, name='urlReverse3'),
    path('reverse2/<data>', views.getReverse2, name='urlReverse2'),
    path('reverse/abc',views.getReverse,name='urlReverse'),
    path('root/',include('myapp.urls')),
]
反向解析带列表参数的URL模式.png

反向解析带字典参数的URL模式.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容