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中传递关键字参数