1:匹配/分组算法
传递额外的参数到视图函数中
urlpatterns = patterns('',
(r'^foo/$', views.foobar_view, {'template_name': 'template1.html'}),
(r'^bar/$', views.foobar_view, {'template_name': 'template2.html'}),
)
# views.py
from django.shortcuts import render_to_response
from mysite.models import MyModel
def foobar_view(request, template_name):
m_list = MyModel.objects.filter(is_new=True)
return render_to_response(template_name, {'m_list': m_list})
这里直接把template_name作为额外参数传到视图
当url里有额外参数跟捕捉值,django总是优先用url的额外参数
r'^mydata/birthday/$', views.my_view, {'month': 'jan', 'day': '06'}),
2:创建一个通用视图
# urls.py
from django.conf.urls.defaults import *
from mysite import views
urlpatterns = patterns('',
(r'^events/$', views.event_list),
(r'^blog/entries/$', views.entry_list),
)
# views.py
from django.shortcuts import render_to_response
from mysite.models import Event, BlogEntry
def event_list(request):
obj_list = Event.objects.all()
return render_to_response('mysite/event_list.html', {'event_list': obj_list})
def entry_list(request):
obj_list = BlogEntry.objects.all()
return render_to_response('mysite/blogentry_list.html', {'entry_list': obj_list})
这两个视图做的事情实质上是一样的:显示一系列的对象。让我们把它们显示的对象的类型抽象出来:
# urls.py
from django.conf.urls.defaults import *
from mysite import models, views
urlpatterns = patterns('',
(r'^events/$', views.object_list, {'model': models.Event}),
(r'^blog/entries/$', views.object_list, {'model': models.BlogEntry}),
)
# views.py
from django.shortcuts import render_to_response
def object_list(request, model):
obj_list = model.objects.all()
template_name = 'mysite/%s_list.html' % model.__name__.lower()
return render_to_response(template_name, {'object_list': obj_list})
我们通过 model 参数直接传递了模型类
使用 model.__name__.lower() 来决定模板的名字
3:使用缺省视图参数
当传递的参数缺省的时候在视图的方法中可以用
def page(request, num="1"):
4:从URL中捕获文本
参数 是作为字符串传至 views的,而不是整型
5:决定URLconf搜索的东西
当一个请求进来时,Django试着将请求的URL作为一个普通Python字符串进行URLconf模式匹配(而不是作为一个Unicode字符串)。这并不包括 GET 或 POST 参数或域名。它也不包括第一个斜杠,因为每个URL必定有一个斜杠。
在解析URLconf时,请求方法(例如, POST , GET , HEAD )并 不会 被考虑。换而言之,对于相同的URL的所有请求方法将被导向到相同的函数中。因此根据请求方法来处理分支是视图函数的责任。
所以www.sohu.com/view/ 跟www.sohu.com/view/?some=1 请求的是同一个视图
6:::包含其他URLconf
如果你的Django项目有多个app的时候就可以用包含(include)来配置你的url
urlpatterns = patterns('',
(r'^weblog/', include('mysite.blog.urls')),
(r'^photos/', include('mysite.photos.urls')),
(r'^about/$', 'mysite.views.about'),
)
注意::::指向 include() 的正则表达式并 不 包含一个 $ (字符串结尾匹配符)但是包含了一个斜杆
每当Django遇到 include() 时,它将截断匹配的URL,并把剩余的字符串发往包含的URLconf作进一步处理
一:捕获的参数如何和include()协同工作
urlpatterns = patterns('',
(r'^(?P<username>\w+)/blog/', include('foo.urls.blog')),
)
一个被包含的URLconf接收任何来自parent URLconfs的被捕获的参数
被捕获的username变量将传递给被包含的 URLconf,进而传递给那个URLconf中的 每一个 视图函数
二: 额外的URLconf如何和include()协同工作
相似的,你可以传递额外的URLconf选项到 include() , 就像你可以通过字典传递额外的URLconf选项到普通的视图。当你这样做的时候,被包含URLconf的 每一 行都会收到那些额外的参数
分享到:
相关推荐
本篇将详细介绍如何配置 Django 的核心配置文件 `settings.py`、URL 路由配置文件 `urls.py` 以及基础的视图处理文件 `views.py`。 #### 二、settings.py 文件配置 1. **应用注册**: - 在 `settings.py` 文件中...
在Django框架中,视图和URL配置是核心概念,它们共同决定了Web应用程序如何响应用户请求。本文将深入探讨这两个主题。 **一、Django视图** 视图是Django应用程序的核心部分,它们负责处理HTTP请求并生成HTTP响应。...
接下来,可以开始编写Django应用程序,创建模型、视图、URL和模板,实现Web应用的功能。在实际开发中,还会涉及数据库配置、权限管理、表单处理、部署等更深入的知识。 文档“django第一阶段总结文档.doc”可能包含...
### Django+Celery+RabbitMQ配置文档 #### 一、环境搭建与配置 ##### 1.1 系统环境 - **操作系统**: Ubuntu 14.04 - **开发工具**: PyCharm 5.0 - **虚拟环境**: 使用虚拟环境隔离项目依赖,避免环境冲突。 #####...
以下是关于如何在Django项目中配置Swagger的详细步骤: 1. **安装依赖**: 首先,你需要确保已经安装了Django REST framework。如果没有,可以通过`pip install djangorestframework`进行安装。接着,为了实现...
Django:Django视图函数与URL配置教程.docx
开发者可以通过修改urls.py中的URL配置,将URL路径与视图函数关联起来,然后通过定义的视图函数来处理不同的数据库表。例如,可以定义一个通用的add视图函数来处理新增资源的请求,然后通过URL参数区分是新增Node、...
在本实例中,我们将深入探讨如何在新浪应用引擎(SAE)上配置并运行Django 1.7.3。SAE是一个基于云计算的服务平台,它提供了便捷的Python Web应用托管服务,而Django则是一个功能强大的Python Web框架。通过在SAE上...
Django自带的`routers`模块是为了解决大规模项目中URL路由管理的问题,它提供了自动化的方式来管理和生成URL模式,从而简化了URL配置,提高了代码的可维护性和可扩展性。本文将详细介绍如何利用Django的`routers`来...
URL模式通常使用正则表达式来实现,但Django也提供了更高级的语法,如命名空间和包括其他URL配置,以提高代码的组织性和复用性。 例如,一个简单的URL配置可能如下所示: ```python from django.urls import path ...
4. **URL配置**:虽然每个应用有自己的URL模式,但整个项目的URL配置通常在`urls.py`文件中进行。你可以在这里定义全局的URL结构,然后导入各个应用的URL模式。例如: ```python from django.contrib import admin ...
总之,Django项目中包含多个应用时,推荐采用模块化的URL配置方式,通过在主`urls.py`中引入各应用的URL配置文件,可以实现清晰的代码组织结构,并简化项目管理。这种方法不仅适用于大型项目,也适用于小型项目,有...
在Python的Django框架中,URL配置是连接视图(views)与用户请求的重要环节。通常,Django的URL配置采用正则表达式,虽然功能强大,但也因为其复杂性而受到批评。为了简化这一过程,有人开发了`url_helper`工具。本...
现在是好时机来指出Django和URL配置背后的哲学: 松耦合 原则。 简单的说,松耦合是一个 重要的保证互换性的软件开发方法。 Django的URL配置就是一个很好的例子。 在Django的应用程序中,URL的定义和视图函数之间是...
在Django中,URL的反向生成是通过URLconf(URL配置)来实现的。开发者需要在项目的urls.py文件中定义URL模式和对应的视图函数。当需要在模板或视图函数中生成URL时,可以使用Django提供的方法进行反向生成。 Django...
通过本篇文档的介绍,我们深入了解了Django中关于URL配置、反向解析、包含其他URL配置以及正则字符串参数等核心概念。这些知识点不仅对于初学者非常重要,也是进阶开发者必须掌握的基础技能。希望本文能够帮助你在...
`settings.py`文件中包含了项目所需的各种设置,比如项目路径、安全关键、调试模式、可访问域名、安装的应用、中间件、URL配置、模板、WSGI服务器接口、数据库配置、密码验证策略、语言和时间区等。 1. **基本配置*...
在Django的早期版本中,URL的配置使用的是include、url和handler等函数,然而从Django 1.10版本开始,Django引入了一些变化,主要是在url配置方面的改进和调整,以促进更清晰、简洁的URL模式配置。 首先,Django ...