Django学习笔记九---003篇---命名空间和url的使用方式

一:namespace(命名空间)

命名空间(namespace):用来表示标识符的作用范围

一个标识符可以在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突。

1.1:namespace使用原因

如果一个项目下有多个应用,例如:

 项目:mysite下面有polls和text_platform两个应用。

每个应用下面都有对应urls.py文件,文件冲都有一个index/的路径,

那么,Django在反向解析路由的时候,就会出现得到不是我们想要的结果。

例如:把polls/urls.py中的index路径解析到了text_platform/urls.py中,通过views指向了我们不要的页面。访问不同URL,反向解析得到相同的path。

虽然我们定义了:name='index',但是,name是没有作用域的,

而namespace是有作用域的。我们定义namespace后,它就只能作用在该应用下面。

例如:

 polls应用和text_platform应用,我们定义了namespace后,那么,就算他们下面的urls.py文件中有相同的/index/路径,那么,我们反向解析时,也不会指向同一个path,一定是指向每个index对应的path.

(同理,他们也不会与mysite项目下的urls.py文件中的index/(假如有的话)指向同一个path),

另外注意一点,namespace是与include的可选参数,就是说,当出现了,include的时候,就可以使用namespace,没有include的时候,namespace是不能使用的。

这一点与name不同,name是在path中都可以使用的。

1.2:namespace的书写格式:

path('应用名/’,include(('应用名.urls','应用名‘),namespace='应用名’)  注意()的个数,很容易少写一个()的。

例如:

 参考博客:https://blog.csdn.net/J_wb49/article/details/103055521 

二:路由的使用方式

在模板templates中使用路由.

以前讲templates的时候,介绍过render函数。

注意的是,render函数的参数,request,templates名称是必填参数,

context是选填参数。

后续还会继续写关于templates的博客,到时再详细介绍。

三:路由的重定向

重定向包括两种,1,路由的重定向  2,自定义视图的重定向。

其中,自定义视图的重定向又包括3、种方式,

分别是:HttpResponseRedirect, HttpResponseRedirectBase  和redirect

代表301和302

后续再详细介绍。

原文地址:https://www.cnblogs.com/star12111/p/15226614.html