`
wcxt2012
  • 浏览: 23650 次
  • 性别: Icon_minigender_1
  • 来自: 甘肃
社区版块
存档分类
最新评论

django 多站点urls配置

阅读更多

转自:http://blog.csdn.net/kevin6216/article/details/6908027

django 多站点urls配置


目录(?)[-]

  1. 包含其他 URLconf
  2. 捕获的参数如何和include协同工作
  3. 额外的URLconf如何和include协同工作





1. 包含其他 URLconf

应用程序基于多个django站点,应该考虑到URLConfig包含【include】的方式来处理urls。

from django.conf.urls.defaults import *
urlpatterns = patterns('',
    (r'^weblog/', include('mysite.blog.urls')),
    (r'^photos/', include('mysite.photos.urls')),
    (r'^about/$', 'mysite.views.about'),

重要的地方:指向 include() 的正则表达式并不包含一个 $ (字符串结尾匹配符),但是包含了一个斜杆。每当 Django 遇到 include() 时,它将截断匹配的URL,并把【剩余】的字符串发往被包含的 URLconf 作进一步处理。 

被包含的 URLconf mysite.blog.urls :
from django.conf.urls.defaults import *
urlpatterns = patterns('',
    (r'^(\d\d\d\d)/$', 'mysite.blog.views.year_detail'),
    (r'^(\d\d\d\d)/(\d\d)/$', 'mysite.blog.views.month_detail'),
)
当请求:/weblog/2011/ 时,首先是 (r'^weblog/', include('mysite.blog.urls'))匹配/weblog/ , 由于使用include,正则停止匹配,并将 2011/发送到mysite.blog.urls中;

(r'^(\d\d\d\d)/$', 'mysite.blog.views.year_detail') 可以匹配 2011/ ,于是将执行 mysite.blog.views.year_detail 视图,并传递参数 2011

2. 捕获的参数如何和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 中的 每一 行,不管那些行对应的
视图是否需要这些参数。因此,这个技术只有在你确实需要那个被传递的参数的时候才显得
有用。

3. 额外的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 中的 每一 行,不管那一行对应的视图是否确实作为有效参数接这些选项,因此,这个技术只有在你确实需要那个被传递的额外参数的时候才显得有用。
分享到:
评论

相关推荐

    Django 配置多站点多域名的实现步骤

    在Django框架中,配置多站点多域名是一项实用的功能,尤其对于那些需要为不同业务或应用分配独立域名的开发者来说。本篇文章将详细介绍如何通过`django-hosts`扩展包实现这一功能。 首先,我们需要安装`django-...

    PythonWeb开发基础教程-第2章-Django配置.pptx

    第二章“Django配置”涵盖了多个关键方面,包括项目的配置文件、基本配置、模板配置、数据库配置以及静态资源配置。 Django项目的配置文件是`settings.py`,它在使用`django-admin startproject`命令创建项目时自动...

    django-polls案例

    【Django Polls 案例详解】 Django Polls 是一个经典的教程项目,它用于引导初学者了解 Django 框架的基本...这只是一个起点,Django 还提供了更多的高级特性,如中间件、自定义管理站点、用户认证等,等待你去探索。

    Django视频学习资源

    Django最初是为了满足新闻站点的需求而创建的,因此在处理高流量网站方面具有天然的优势。 #### 二、Django框架的特点 1. **自动化的管理后台**:Django提供了一个自动化的管理界面,可以根据定义的数据模型自动...

    django 1.2.4

    - **激活管理站点**:Django内置了一个强大的管理站点,可以通过简单的配置让模型变得可管理。一旦模型被注册,管理站点将自动提供一个用于增删改查的界面。 - **自定义管理功能**:除了基本的CRUD操作,开发者还...

    Django后台开发演示案例

    1. Django安装与环境配置: 在开始开发之前,确保已经安装了Python,并使用pip工具安装Django。在命令行中运行`pip install django`即可。创建一个虚拟环境以隔离项目依赖,可以使用`python -m venv myenv`创建虚拟...

    Django1.5 官方入门教程第1部分中文版

    在Django中,一个项目可以包含多个应用,每个应用专注于特定的功能。对于投票应用,我们可以创建一个名为"polls"的应用。在项目根目录(即含有manage.py的目录)下,运行`python manage.py startapp polls`命令。这...

    django中如何使用admin进行多个模型的后台管理

    在Django这个强大的Web开发框架...通过以上步骤,你可以在Django的Admin站点中有效地管理和操作多个模型,实现更灵活的后台管理界面。不断学习和实践Django的Admin功能,可以极大地提高开发效率,使项目管理更加便捷。

    使用_Django_和_Python_开发_Web_站点

    ### 使用Django与Python开发Web站点:从零到精通 #### 概述 Django作为一款高生产力的Python Web框架,旨在通过减少开发时间和简化复杂度来加速Web应用的开发。该框架源于一个在线新闻网站的开发实践,在2005年以...

    django layui表单加图片上传功能(Django,layui).zip

    from django.urls import path from . import views urlpatterns = [ path('upload/', views.upload_image, name='upload_image'), ] ``` 6. **Layui上传配置**: 如果你希望在前端实现异步上传,可以使用...

    Django 基础认识

    ### Django基础认识详解 #### 一、为什么选择Django? Django是一款强大的开源Web框架,基于Python语言构建,被广泛应用...这只是一个非常基础的例子,但通过这种方式,你可以逐步深入学习Django框架的更多高级特性。

    Python-iHealth项目的后台程序一个基于Django和MongoDB的Web后端

    通常,一个Django项目的文件结构会包含`manage.py`(项目管理脚本)、`settings.py`(项目配置)、`urls.py`(URL配置)、`views.py`(视图函数)等关键文件,以及`apps`目录(包含各个应用模块)和`templates`目录...

    django1.8教程

    在入门教程中,我们会学到如何配置URLs,使用视图函数和快捷函数,以及如何使用装饰器。除此之外,还有内建视图的介绍、文件上传的处理、基于类的视图的高级应用,例如生成CSV和PDF文件。中间件则在请求和响应处理...

    python django入门源码

    4. URLs(URL配置):通过URL配置,你可以将特定的URL映射到相应的视图函数。理解URLconfs的结构和工作原理是必要的。 5. Forms(表单):Django提供了一套强大的表单处理机制,用于处理用户输入。学习如何创建表单...

    Django Sitemap 站点地图的实现方法

    from django.conf.urls import url from django.contrib.sitemaps import GenericSitemap from django.contrib.sitemaps.views import sitemap from blog.models import Entry sitemaps = { 'blog': ...

    Django-中文教程.pdf

    - `urls.py`:路由配置文件,定义URL到视图函数的映射规则。 - **应用目录结构解析**:分析应用目录中的主要文件及其功能。 - `models.py`:定义数据模型。 - `views.py`:处理业务逻辑。 - `templates`:存放...

    真正的xadmin-django2.zip for djang2.x

    2. **django.core.urlresolver错误**:在Django的早期版本到2.x的升级过程中,url解析器的模块路径发生了变化,从`django.core.urlresolvers`更改为`django.urls.resolvers`。xadmin2.0 for Django2.x已经适应了这个...

Global site tag (gtag.js) - Google Analytics