booktest27-url反向解析

目的:根据url正则表达式的配置动态的生成url

1)在项目urls中包含具体应用的urls文件时指定namespace

2) 在应用的urls中配置时指定name

3)模板文件中使用时,格式如下:

{% url 'namespace名字:name' %} 

带位置参数{% url 'namespace名字:name' 参数 %}

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

4)在视图函数中使用需要导入reverse函数,具体例子见下面

 

1.添加视图函数

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

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


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

2.添加url_reverse.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>url反向解析</title>
</head>
<body>
index链接:
<a href="/index">首页</a><br/>
url反向解析生成index链接:<br/>
<a href="{% url 'booktest:index' %}">首页</a><br/>
/showargs/1/2:<br/>
<a href="/show_args/1/2">/show_args/1/2</a><br/>
动态生成/show_args/1/2:<br/>
<a href="{% url 'booktest:show_args' 1 2 %}">/show_args/1/2</a><br/>
/show_kwargs/3/4
<a href="/show_kwargs/3/4">/show_kwargs/3/4</a><br/>
动态生成
<a href="{% url 'booktest:show_kwargs' c=3 d=4 %}">/show_args/3/4</a>
</body>
</html>

3.修改项目urls配置

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^', include(('booktest.urls','booktest'), namespace='booktest')),
]

4.修改app urls配置

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

5.测试反向解析在html文件中的使用

6.反向解析在视图函数中的使用

from django.urls import reverse
def test_redirect(request):
    #重定向到index
    # url =  reverse('booktest:index')

    #重定向到show_args/1/2
    # url = reverse('booktest:show_args',args=(1,2))

    # 重定向到show_kwargs/1/2
    url = reverse('booktest:show_kwargs', kwargs={'c':3,'d':4})
    return redirect(url)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值