Python Django框架url反向解析实现动态生成对应的url链接示例
本文实例讲述了PythonDjango框架url反向解析实现动态生成对应的url链接。分享给大家供大家参考,具体如下:
- url反向解析:根据url路由规则,动态生成对应的url链接(防止硬编码)。
- url反向解析应用在两个地方:模板中的超链接,视图中的重定向。
项目名/urls.py(项目的url路由配置,url反向解析,取namespace名字):
fromdjango.conf.urlsimportinclude,url fromdjango.contribimportadmin urlpatterns=[ url(r'^admin/',include(admin.site.urls)), url(r'^',include('booktest.urls',namespace='booktest')),#为对应的应用中的url路由定义namespace名字。 ]
应用名/urls.py(应用的url路由配置,为url路由取name名字):
fromdjango.conf.urlsimporturl frombooktestimportviews urlpatterns=[ url(r'^index$',views.index,name='index'),#url反向解析,取name名字。 url(r'^show_args/(\d+)/(\d+)$',views.show_args,name='show_args'),#捕获位置参数 url(r'^show_kwargs/(?P\d+)/(?P \d+)$',views.show_kwargs,name='show_kwargs'),#捕获关键字参数 ]
应用名/views.py(视图,视图函数中使用url反向解析):
fromdjango.shortcutsimportrender,redirect fromdjango.core.urlresolversimportreverse#url反向解析 #视图函数。视图函数中使用url反向解析,动态生成对应的url。 deftest_redirect(request): #重定向到/index #url=reverse('booktest:index') #重定向到/show_args/1/2url中有位置参数 #url=reverse('booktest:show_args',args=(1,2))#url中拼接位置参数 #重定向到/show_kwargs/3/4url中有关键字参数 url=reverse('booktest:show_kwargs',kwargs={'c':3,'d':4})#url中拼接关键字参数 returnredirect(url) #returnredirect('/index')
templates/应用名/demo.html(模板文件,模板中使用url反向解析):
url反向解析 url反向解析动态生成index链接:
首页 url中传递位置参数,动态产生/show_args/1/2:
url中传递位置参数
url中传递关键字参数:/show_kwargs/3/4:
url中传递关键字参数