django之反向解析

作用:当某一个url配置的地址发生变化时,页面上使用反向解析生成地址的位置不需要发生变化。(实质是给url路径起了个别名name,前端页面中引用时引用的是url的别名name,因此与路径变化没有关系。)
eg:url(r’^index3$’, index, name=‘index’),

  1. 在项目的urls中包含具体应用的urls文件时指定namespace,一般值为应用名字即可;
urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),  # 配置项目
    url(r'^', include('booktest.urls', namespace='booktest')),
]
  1. 在应用的urls中配置时给视图函数指定name。
在模板文件中使用时,格式如下:

{% url ‘namespace名字:name’ %}
eg:{% url ‘booktest:index’ %}
这个namespace同项目的urls文件中指定的namespace。

注意:
带位置参数
{% url ‘namespace名字:name’ 参数 %}

带关键字参数
{% url ‘namespace名字:name’ 关键字参数 %}

在重定向的时候使用反向解析

from django.core.urlresolvers import reverse
无参数
reverse(‘namespace名字:name名字’)
有位置参数
reverse(‘namespace名字:name名字’, args=位置参数元组)
有关键字参数
reverse(‘namespace名字:name名字’, kwargs=关键字参数字典)

# 无参数
url = reverse('booktest:index')
return redirect(url)

# 有位置参数
url = reverse('booktest:show_args', args=(12, 3))
return redirect(url)

# 有关键字参数
url = reverse('booktest:show_kwargs', kwargs={'c': 23, 'd': 4})
return redirect(url)

你可能感兴趣的:(django,pythonWeb)