Django对应的路由名称

Posted momo8238

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django对应的路由名称相关的知识,希望对你有一定的参考价值。

1. 名字很长,修改起来很麻烦

 

 

2.Django提供了一种方法

在urls.py中修改了名字以后,html中会自动对应做修改。这样提交表单的时候就会比较方便了。跳转到写死的某个URL。

 

 

3.根据名字indexx只能找到前缀,无法匹配后面的数字,例如detail-1中的这个数字1。想获得数字,需要重新定义一个参数来接收。

 

 跳转了,指向了一个新的页面。

 

如下:表明跳转到哪个页面。第二个参数写死了,你想访问某个URL,我可以让你跳转(提交)到另外一个指定的URL.

 

当然了,也可以访问哪个,就还是跳转到哪个。跳转到自己所在的页面。这种的话,跳转到当前页面,看不到效果。path_info是一个内置函数,可以获取到当前url的路径。

 

因为render传递的时候,已经把request这个参数传过来了。所以可以直接调用。

 

上面的也可以改变方式传参数:<form action="{% url \'indexx\' nid=1 uid=3 %}" method="POST"> 

这样的话,就帮URL生成了一个新的功能。跳转的功能。一点提交,就提交到了一个新的页面。

 

4.上面讲的是在模板语言中,基于views.py中的name生成新的URL.

     在view.py中也可以根据name生成URL, 格式与上面的稍有不同。

url(r\'^asdfdfdfd/(\\d+)/\',views.index,name=\'indexx\')	
v=reverse(\'indexx\',args=(90,)

url(r\'^asdfdfdfd/(\\d+)/(\\d+)/\',views.index,name=\'indexx\')
v=reverse(\'indexx\',args=(90,88,)

url(r\'^asdfdfdfd/(?P<nid>\\d+)/((?P<uid>\\d+)/\',views.index,name=\'indexx\') v=reverse(\'indexx\',kwargs={\'nid\':1,\'uid\':99})

 

 

 

 

 

5.本节笔记

	4.name---非常重要
	对URL路由关系进行命名,目的:以后可以根据此名称获取索引,进而生成自己想要的URL。
	URL中的写法:
		url(r\'asdfsdfasd/\',views.index, name=\'i1\'),
		url(r\'yug/(\\d+)//(\\d+)/\',views.index, name=\'i2\'),
		url(r\'buy/(?P<pid>\\d+)/(?P<nid>\\d+)/\',views.index, name=\'i3\'),
		
	在views函数里面,如果我想在def的函数里面,根据name生成新的url
		def func(request, *args, **kwargs):
			from django.urls import reverse
			url1 = reverse(\'i1\')                          #生成的就是这个url:asdfsdfasd/
			url2 = reverse(\'i2\',args=(1,2,))              #生成的就是这个url:yug/1/2
			url3 = reverse(\'i3\',kwargs={\'pid\':1,"nid":9}) #生成的就是这个url:buy/1/9
			
	在模板语言里面,xxxx.html 
		{% url "i1" %}               #asdfsdfasd/
		{% url "i2" 1 2 %}           #yug/1/2
		{% url "i3" pid=1 nid=9 %}   #buy/1/9

 

 4.name---非常重要
对URL路由关系进行命名,目的:以后可以根据此名称获取索引,进而生成自己想要的URL。
URL中的写法:
url(r\'asdfsdfasd/\',views.index, name=\'i1\'),
url(r\'yug/(\\d+)//(\\d+)/\',views.index, name=\'i2\'),
url(r\'buy/(?P<pid>\\d+)/(?P<nid>\\d+)/\',views.index, name=\'i3\'),

在views函数里面,如果我想在def的函数里面,根据name生成新的url
def func(request, *args, **kwargs):
from django.urls import reverse
url1 = reverse(\'i1\')                          #生成的就是这个url:asdfsdfasd/
url2 = reverse(\'i2\',args=(1,2,))              #生成的就是这个url:yug/1/2
url3 = reverse(\'i3\',kwargs={\'pid\':1,"nid":9}) #生成的就是这个url:buy/1/9

在模板语言里面,xxxx.html
{% url "i1" %}               #asdfsdfasd/
{% url "i2" 1 2 %}           #yug/1/2
{% url "i3" pid=1 nid=9 %}   #buy/1/9
 

 

杂七杂八

	模板语言:
		url(r\'asdfsdfasd/\',views.index, name=indexx),
		{%url "indexx" %} #indexx 只能获取到前面的索引,在这里指:asdfsdfasd/。 它是没法获取到后面的数字的。
		
		url(r\'asdfsdfasd/(\\d+)\',views.index, name=indexx),
		{%url "indexx"  3 %} #自己想跳转到哪里就跳到哪里。跳转到indexx代表的前缀-3 的网址了。基于当面URL的名称,跳转到了一个新的网址。
		
		#当前的URL:request.path_info

	编辑完某页之后,希望还是留在当前页;
	编辑完某页之后,希望返回首页。
	
	根据名字反转生成URL
	from django.urls import reverse
	v=reverse(\'indexx\',args=(90,)
	v=reverse(\'indexx\',kwargs={\'nid\':1,\'uid\':99})

 

以上是关于Django对应的路由名称的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

Django框架——路由分发名称空间虚拟环境视图层三板斧JsonResponse对象request获取文件FBV与CBVCBV源码剖析模版层

Django的urls(路由)

Django2.0路由层-URLconf