django 反向解析

反向解析: 当某一个url配置的地址发生变化时,页面上使用反向解析生成地址的位置不需要发生变化。

比如:我们在视图函数中定义的index视图函数为如下:

def index(request):
    return render(request, 'booktest/index.html')

我们的urls.py路由文件定义如下:

url(r'^index$', views.index),

现在是可以访问的,但是问题来了,如果我们想换首页的函数为如下:

url(r'^index22$', views.index),

这样的话,就没办法匹配了,如果还想让视图函数中的index函数进行匹配上的话,那么可以用到反向解析这个方法。

1、 首先现在项目中的urls.py中定义我们应用booktest的路由url(r'^', include('booktest.urls', namespace='booktest')),,加上namespace='booktest'

2、然后在应用中的urls.py中定义我们路由url(r'^index22$', views.index, name='index'),,加上name='index' 就可以进行匹配了。

3、在模板文件中也要有相应的变化,index模板文件修改为如下:

反向url解析:index<br>
<a href="{% url 'booktest:index' %}">index</a><br>

在模板文件中使用时,格式如下:
{% url 'namespace的名字:视图函数名' %}
例如{% url 'booktest:fan2'%}


带位置参数{% url 'namespace的名字:name' 参数 %}
例如{% url 'booktest:show_args' 1 2 %}

路由文件定义如下:

    url(r'^show_args/(\d+)/(\d+)', views.show_args, name='show_args'),

视图函数定义如下:

def show_args(request, a, b):
    return HttpResponse(a + ":" + b)

模板文件定义如下:

动态url反向解析:可变位置参数show_args<br>
<a href="{% url 'booktest:show_args' 1 2 %}">show_args</a><br>

带关键字参数{% url 'namespace的名字:name' 关键字参数 %}
例如{% url 'booktest:show_kwargs' c=3 d=4 %}

路由文件定义如下:

    url(r'^show_kwargs/(?P<c>\d+)/(?P<d>\d+)$', views.show_kwargs, name='show_kwargs')

视图函数定义如下:

def show_kwargs(request, c, d):
    return HttpResponse(c + ":" + d)

模板文件定义如下:

动态url反向解析:可变位置参数show_kwargs<br>
<a href="{% url 'booktest:show_kwargs' c=3 d=4 %}">show_kwargs</a><br>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值