django.cof.url.defaults


django.cof.url.defaults.patterns()

1
2
3
4
5
6
7
urlpatterns = patterns('',    # Example:
# (r'^mysite/', include('mysite.foo.urls')),
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
# to INSTALLED_APPS to enable admin documentation:
# (r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
# (r'^admin/', include(admin.site.urls)),)

在这个函数中添加元组映射:正则表达式->视图函数

在正则表达式中,'^admin/'将会和以admin为开头的url匹配,如/admin/user/

'admin/$'将会和以admin为结尾的url匹配,如/01/lal/admin/

为根目录实现视图:只需要添加正则表达式'^$'对应的视图函数就可以进行根目录的匹配

django.cof.url.defaults.include()

1
include(arg, namespace=None, app_name=None):

arg是url.py的位置字符串,指定的该url文件位置可以在所在文件配置patterns,实现松散耦合。

namespace给url定义命名空间

Django处理视图

当运行python manage.py runserver时,脚本将在于manage.py的同目录下寻找setting.py文件,以寻找配置信息:

Django处理视图的过程

ROOT_URLCONF这个配置最为重要,它将作为URLconf告诉Django在这个站点中那些Python的模块将被用到

1
ROOT_URLCONF = 'mysite.urls'

这个配置指向mysite/url.py文件,这是视图配置的文件

ROOT_URLCONF配置URLconf,并且在URLpatterns中进行匹配url所映射的view函数并调用,且把HttpRequest对象作为第一个参数传入函数中

视图函数返回一个HttpResponse

Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来

view函数的传参

默认情况下,view的第一个参数是HttpRequest对象。但是对于URLpatterns中url正则表达式的强大应用,如果匹配到了不确定性的内容,就需要我们向view中传参进行处理。如:

1
2
3
4
5
from django.conf.urls.defaults import *
from mysite.views import hello, current_datetime, hours_ahead
urlpatterns = patterns('', (r'^hello/$', hello),
(r'^time/$', current_datetime), (r'^time/plus/(\d{1,2})/$', hours_ahead),
)

对于(\d{1,2})的匹配,可能会有1-2位的整数出现,对于这种不确定的情况,我们想要对不同的值获取不同的结果,当然要在视图(view)中设置参数传入。

1
2
3
4
5
6
from django.http import Http404, HttpResponseimport datetime
def hours_ahead(request, offset): try: offset = int(offset)
except ValueError: raise Http404()
dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
html = "<html><body>In %s hour(s), it will be %s.</body></html>" % (offset, dt)
return HttpResponse(html)

offset 是从匹配的URL里提取出来的。 例如:如果请求URL是/time/plus/3/,那么offset将会是3;如果请求URL是/time/plus/21/,那么offset将会是21。请注意:捕获值永远都是字符串(string)类型,而不会是整数(integer)类型,即使这个字符串全由数字构成(如:“21”)。

offset的位置很重要,它一定是view函数的第二个参数

其中有一个非常重要也是老练的做法,就是传参进来之后,先要将参数进行类型转换(类型设定),比如offset需要int()一下,否则默认是str类型的

还有一个地方,就是如果出现异常抛出了Http404

url&视图的更多相关文章

  1. Django 路由系统URL 视图views

    一.Django URL (路由系统) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:你就是以这种方式告诉Djan ...

  2. Django学习---路由url,视图,模板,orm操作

    Django请求周期 url ->  路由系统  ->函数或者类 -> 返回字符串 或者 模板语言 Form表单提交: 点击提交 -> 进入url系统  ->  执行函数 ...

  3. 巨蟒python全栈开发django3:url&&视图

    1.url正则匹配分组和命名分组 2.路由分发 3.url别名和反向解析 4.httprequest和httpresponse的使用 内容回顾: .jinja2(flask框架,没有内置模板对象,需要 ...

  4. spring mvc velocity多视图

    1.ViewResolverUrlBasedViewResolver 这个东西是根据url 进行路由的.网上搜了 1.order 排序,同名出现各种问题 2.XmlViewResolver,BeanN ...

  5. Django学习笔记(二)视图函数

    一.url映射 1.为什么回去urls.py文件中找映射? 在‘settings.py’文件中配置了‘ROOT_URLCONF’为‘urls.py’.所有的django回去urls.py中寻找. 2. ...

  6. Django(命名URL和URL反向解析)

    day67 参考: https://www.cnblogs.com/liwenzhou/articles/8271147.html#autoid-1-4-0 反向解析URL             本 ...

  7. django views视图

    视图函数简称视图,本质上是一个简单的python函数,它接受web请求并且返回web响应:响应的内容可以是HTML网页.重定向.404错误.XML文档或图像等任何东西,但是,无论视图本身是个什么处理逻 ...

  8. ZendFramework-2.4 源代码 - 关于MVC - View层 - 视图渲染器、视图插件管理器

    <?php // 1. 视图渲染器 class PhpRenderer implements Renderer, TreeRendererInterface { /** * 插件管理器 */ p ...

  9. 关于SpringMVC映射模型视图的几点小事

    一.SpringMVC概述 SpringMVC为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最主流的MVC框架之一. SpringMVC通过一套MVC注解,让POJO成为处理请求的控制器, ...

随机推荐

  1. commons-logging 和 log4j 之间的关系

    我们在做项目时,日志的记录是必不可少的一项任务,而我们通常是使用 apache 的 log4j 日志管理工具.然而,在项目中,我们经常会看到两个 jar 包:commons-logging.jar 和 ...

  2. python运维开发(十九)----Django后台表单验证、session、cookie、model操作

    内容目录: Django后台表单验证 CSRF加密传输 session.cookie model数据库操作 Django后台Form表单验证 Django中Form一般有2种功能: 1.用于做用户提交 ...

  3. set(二叉搜索树)

    找球号(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i<= ...

  4. C#设置标记方法等为否决的不可用

       C#如何标记类里面的方法或者类为否决的,不可使用.在VS IDE编辑器中使用此方法或者类时会用绿色的波浪线标记这个语句,当移动鼠标到这句代码上时,会出现[否决的]方法名,警告“方法名称”已过时: ...

  5. 数据类型MSVC和gcc/g++的不同

    前言: 在16位环境下,int/unsigned int 占16位,long/unsigned long占32位 在32位环境下,int占32位,unsigned int占16位,long/unsig ...

  6. django项目环境搭建备忘

    由于使用python3,所以尽量为每个项目配置虚拟环境来管理各个项目的=. 新建一个项目文件夹,进入该路径 python3 -m venv ll_env 然后激活虚拟环境 source ll_env/ ...

  7. Paper.js - Paper.js

    Paper.js - Paper.js   Paper.js is an open source vector graphics scripting framework that runs on to ...

  8. PL/SQL Developer 如何显示行号

    一.工具-首选项-用户界面-编辑器-其它-显示行号二.工具-首选项-窗口类型-SQL窗口-显示隔号(行号)

  9. CSS入门教程——定位(positon)

    CSS入门教程——定位(positon) CSS定位在网页布局中是起着决定性作用.   定位 CSS的定位功能是很强大的,利用它你可以做出各种各样的网页布局.本节就介绍一些CSS常用的定位语句. 1. ...

  10. iOS 字体设置

    使用无衬线字体 body {     font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif; }  iOS 4 ...