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. read/load

    ready先执行,load后执行. DOM文档加载的步骤: (1) 解析HTML结构. (2) 加载外部脚本和样式表文件. (3) 解析并执行脚本代码. (4) 构造HTML DOM模型.//read ...

  2. H.数7(模拟)

    1212: H.数7 时间限制: 1 Sec  内存限制: 64 MB 提交: 8  解决: 5 标签提交统计讨论版 题目描述 数7是一个简单的饭桌游戏,有很多人围成一桌,先从任意一人开始数数,1.2 ...

  3. ActionBar-PullToRefreshLibs+沉浸式在部分手机上的布局错乱,目前知道的三星

    前段时间看见ActionBar-PullToRefreshLibs用来刷新很好看,配合4.4以上支持的沉浸式效果更佳,于是便想配合沉浸式+ActionBar-PullToRefreshLibs做出一个 ...

  4. 【项目】git的部署使用

    一.官方网站 网站: https://git.oschina.net/ 注册.登陆 二.终端操作 打开终端,输入 # 切换目录,MAC中目录的第一个字符如果是 `.` 表示改文件夹是隐藏文件夹 $ c ...

  5. scrollbarsstyle

    android:scrollbarStyle属性及滚动条和分割线覆盖问题 本文主要介绍android view的android:scrollbarStyle属性意义android:scrollbarS ...

  6. keil C51 指针总结

    变量就是一种在程序执行过程中其值能不断变化的量.要在程序中使用变量必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间.定义一个变量的格式如下: [存储种 ...

  7. C# 调用FFmpeg 根据图片合成视频

    1.项目结构: 2.代码: using System; using System.Collections.Generic; using System.Diagnostics; using System ...

  8. scheme一页纸教程

    这是一个大学教授写的,非常好,原文:http://classes.soe.ucsc.edu/cmps112/Spring03/languages/scheme/SchemeTutorialA.html ...

  9. UESTC_冰雪奇缘 CDOJ 843

    艾莎女王又开始用冰雪魔法盖宫殿了. 她决定先造一堵墙,于是释放魔法让形为直角梯形的冰砖从天而降,定入冻土之中. 现在你将回答女王的询问:某段冻土上冰砖的面积. 注:多块冰砖之间会互相重叠,重叠部分要多 ...

  10. OpenGL进阶(十一) - GLSL4.x中的数据传递

    in out 对于 vertex shader,每个顶点都会包含一次,它的主要工作时处理关于定点的数据,然后把结果传递到管线的下个阶段. 以前版本的GLSL,数据会通过一些内建变量,比如gl_Vert ...