首页 > 其他 > 详细

6-视图-2

时间:2019-11-30 22:59:17      阅读:77      评论:0      收藏:0      [点我收藏+]

URL反向解析

1、reverse方法(reverse(viewname,urlconf=None,args=None,kwargs=None,current_app=None))

技术分享图片
viewname可以是url模式的名字,也可以是name所指的名字,
urlconf这个属性决定当前的反向解析使用哪一个URLconf模块,默认是URLconf
args用于传递参数,可以是元组或者列表,顺序填充URL中的位置参数
kwargs和args一样,但传递的是字典类型,使用关键字指定参数和参数值。注意args和kwargs不可同时出现
current_app当前执行的视图是哪一个应用的
View Code

 

    re_path(msg/(?P<name>[\u4e00-\u9fa5]{0,4})/(?P<year>[0-9]{4})/(?P<month>0[0-9]|1[0-2])/(?P<day>0[1-9]|1[0-9]|2[0-9]|30)/,views.time_time,name=time),#指定url的name

在shell环境中

>>> from django.urls import reverse
>>> reverse(time,args=(诺言,2019,11,20))
/firstapp/msg/%E8%AF%BA%E8%A8%80/2019/11/20
>>> reverse(time,kwargs={name:诺言,year:2019,month:11,day:20})
/firstapp/msg/%E8%AF%BA%E8%A8%80/2019/11/20/

 

reverse常常用于视图重定向,reverse中的viewname也可以传递视图对象

from django.urls import reverse
from django.http import HttpResponseRedirect
def test(request,ceshi):
    return HttpResponseRedirect(reverse(time,kwargs={name:诺言,year:2019,month:11,day:20}))

 

2、命名空间

URL命名空间分为两部分
1、app_name:正在部署的应用,
2、区分同一个应用部署的多个不同空间

 

首先在总项目的urls.py中增加命名空间

urlpatterns = [
    path(‘admin/‘, admin.site.urls),
    path(‘firstapp/‘,include(‘firstApp.urls‘,namespace=‘first‘))
]

在应用中添加

app_name=‘first‘

最后修改一下reverse方法

from django.urls import reverse
from django.http import HttpResponseRedirect
def test(request,ceshi):
    return HttpResponseRedirect(reverse(first:time,
                                        kwargs={name:诺言,year:2019,month:11,day:20},
                                        current_app=request.resolver_match.namespace))

 

视图重定向

重定向分为两种:临时重定向和永久重定向

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6-视图-2

原文:https://www.cnblogs.com/xymaxbf/p/11964208.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!