当前位置: 首页 > 编程笔记 >

Django中URLconf和include()的协同工作方法

孟祯
2023-03-14
本文向大家介绍Django中URLconf和include()的协同工作方法,包括了Django中URLconf和include()的协同工作方法的使用技巧和注意事项,需要的朋友参考一下

捕获的参数如何和include()协同工作

一个被包含的URLconf接收任何来自parent URLconfs的被捕获的参数,比如:

# root urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^(?P<username>\w+)/blog/', include('foo.urls.blog')),
)

# foo/urls/blog.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^$', 'foo.views.blog_index'),
 (r'^archive/$', 'foo.views.blog_archive'),
)

在这个例子中,被捕获的 username 变量将传递给被包含的 URLconf,进而传递给那个URLconf中的 每一个 视图函数。

注意,这个被捕获的参数 总是 传递到被包含的URLconf中的 每一 行,不管那些行对应的视图是否需要这些参数。 因此,这个技术只有在你确实需要那个被传递的参数的时候才显得有用。
额外的URLconf如何和include()协同工作

相似的,你可以传递额外的URLconf选项到 include() , 就像你可以通过字典传递额外的URLconf选项到普通的视图。 当你这样做的时候,被包含URLconf的 每一 行都会收到那些额外的参数。

比如,下面的两个URLconf在功能上是相等的。

第一个:

# urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^blog/', include('inner'), {'blogid': 3}),
)

# inner.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^archive/$', 'mysite.views.archive'),
 (r'^about/$', 'mysite.views.about'),
 (r'^rss/$', 'mysite.views.rss'),
)

第二个

# urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^blog/', include('inner')),
)

# inner.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
 (r'^archive/$', 'mysite.views.archive', {'blogid': 3}),
 (r'^about/$', 'mysite.views.about', {'blogid': 3}),
 (r'^rss/$', 'mysite.views.rss', {'blogid': 3}),
)

这个例子和前面关于被捕获的参数一样(在上一节就解释过这一点),额外的选项将 总是 被传递到被包含的URLconf中的 每一 行,不管那一行对应的视图是否确实作为有效参数接收这些选项,因此,这个技术只有在你确实需要那个被传递的额外参数的时候才显得有用。 因为这个原因,这种技术仅当你确信在涉及到的接受到额外你给出的选项的每个URLconf时有用的才奏效。

 类似资料:
  • 项目落户GitHub后,一定希望有越来越多的人能参与其中。GitHub提供了包括传统的问题追踪系统、维基,还包括了分布式版本控制系统特有的协同工具。 4.1. Fork + Pull模式 4.2. 共享版本库 4.3. 组织和团队 4.4. 代码评注 4.5. 缺陷跟踪 4.6. 维基

  • 本文向大家介绍在Django的URLconf中使用命名组的方法,包括了在Django的URLconf中使用命名组的方法的使用技巧和注意事项,需要的朋友参考一下 在我们想要捕获的URL部分上加上小括号,Django 会将捕获的文本作为位置参数传递给视图函数。 在更高级的用法中,还可以使用 命名 正则表达式组来捕获URL,并且将其作为关键字参数传给视图。 一个 Python 函数可以使用关键字参数或位

  • 问题内容: 我遇到了一个有趣的问题,一个以苹果为中心的用户将渴望在Filemaker Pro上运行数据库,而我们已经有多个数据库在MS SQL上运行。 FM Pro在外观上令人赞叹,作为与客户合作的前端看起来不错,但我更喜欢SQL。 有人同时使用吗?您是否可以轻松地在SQL和FM Pro之间运行任务以将数据更新到FM Pro(比如说隔夜)?是否有人出于任何目的将SQL从FM Pro更改为可以吗?

  • 问题内容: 我很难让这些组件正确地编织在一起。我已经安装了Spark并且可以成功工作,我可以在本地,独立运行作业,也可以通过YARN运行作业。据我所知,我已经按照此处和此处建议的步骤进行操作 我正在使用Ubuntu,而我拥有的各种组件版本是 Spark Spark 1.5.1-bin-hadoop2.6 Hadoop hadoop-2.6.1 蒙哥 2.6.10 *从 https://github

  • 完全相同的问题,因为Ubuntu WSL与docker无法找到 但我的要求不同——我想 坚持使用WSL1(出于本主题以外的原因) 也就是说,我有WSL1和Docker for Windows彼此并行安装。这是我目前的信息: 我看不到“资源”中的集成- 只是我遇到了上面的问题——我的可以在任何地方工作,在CMD、Powershell、git bash等中,只是不在我的WSL中。 我找到的所有解决方案

  • 本文向大家介绍Django框架中处理URLconf中特定的URL的方法,包括了Django框架中处理URLconf中特定的URL的方法的使用技巧和注意事项,需要的朋友参考一下 有时你有一个模式来处理在你的URLconf中的一系列URL,但是有时候需要特别处理其中的某个URL。 在这种情况下,要使用将URLconf中把特殊情况放在首位的线性处理方式 。 比方说,你可以考虑通过下面这个URLpatte