快捷搜索:  MTU2MTQ3NTQxOA`  as

Django 的逆向解析url(转)

首先新建一个项目test_url,项目包孕一个名为app01的利用

在urls.py文件中天生如下内容

from django.conf.urls import url

from django.shortcuts import HttpResponse

def index(request):

return HttpResponse("index")

def test(request):

return HttpResponse("test")

urlpatterns = [

url(r'^index',index),

url(r'^test',test),

]

启动项目,用浏览器打开http://127.0.0.1:8000/test和http://127.0.0.1:8000/index/

页面如下

image.png

image.png

上面的例子是正向天生url,既然Django可以正向天生url,当然也可以反向天生url

无参数反向天生url

改动urls.py文件

from django.conf.urls import url

from django.shortcuts import HttpResponse,redirect

def index(request):

from django.urls import reverse# 导入reverse

reverse_url=reverse("test_url")# 用reverse把又名为test_url的路由反向天生url

print("reverse_url:",reverse_url)# 打印反向天生的url

return redirect(reverse_url)# 重定向到反向天生的url

def test(request):

return HttpResponse("test")

urlpatterns = [

url(r'^index',index),

url(r'^test1/test2/test3/test',test,name="test_url"),# 为test路由设置一个test_url又名

]

用浏览器打开http://127.0.0.1:8000/index,然后回车

image.png

而办事端打印的反向天生的utl如下

image.png

可以看到,浏览器的地址栏里显示的url跟我们输入的地址不一样,而是跟Django的路由表中设置了路由又名的url是一样的.

从上面的例子可以看出,反向天生url已经成功了.

有参数的反向天生url

应用正则表达式经由过程args传入参数反向天生url

改动urls.py文件

from django.conf.urls import url

from django.shortcuts import HttpResponse,redirect

def index(request):

from django.urls import reverse

reverse_url=reverse("test_url",args=(2,8))

print("reverse_url:",reverse_url)

return redirect(reverse_url)

def test(request,*args,**kwargs):

return HttpResponse("test")

urlpatterns = [

url(r'^index',index),

url(r'^test1/(\d+)/test2/test3/(\d+)/test',test,name="test_url"),

]

浏览器打开http://127.0.0.1:8000/index这个地址

浏览器的地址变成了

image.png

而在办事端后台打印反向天生的url为

image.png

应用正则表达式经由过程kwargs传入参数反向天生url

改动urls.py文件

from django.conf.urls import url

from django.shortcuts import HttpResponse,redirect

def index(request):

from django.urls import reverse

reverse_url=reverse("test_url",kwargs={"a1":23,"a2":37})

print("reverse_url:",reverse_url)

return redirect(reverse_url)

def test(request,*args,**kwargs):

return HttpResponse("test")

urlpatterns = [

url(r'^index',index),

url(r'^test1/(?P\d+)/test2/test3/(?P\d+)/test',test,name="test_url"),

]

浏览器打开http://127.0.0.1:8000/index这个个地址

image.png

后台打印反向天生的url

image.png

在前端中也可以应用反向url

{% url "test" 2013 12%}

{% url "test" year=2013 month=12%}

您可能还会对下面的文章感兴趣: