url&视图


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

时间: 2024-10-05 04:37:25

url&视图的相关文章

django url 视图

昨日内容回顾 django下载安装 下载:pip install django==1.11.9 创建项目 django-admin startproject qingqing cd qingqing 启动项目:python manage.py runserver 127.0.0.1:8001 cd qingqing 创建app:python manage.py startapp xiaoqing 需要在项目的配置文件settings.py中添加一个app的配置 INSTALL_APPS = [

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

<?php // 1. 视图渲染器 class PhpRenderer implements Renderer, TreeRendererInterface { /** * 插件管理器 */ public function getHelperPluginManager() { if (null === $this->__helpers) {// false $this->setHelperPluginManager(new HelperPluginManager()); } return

详解Spring MVC 4之ViewResolver视图解析器

所有的We MVC框架都有一套它自己的解析视图的机制,Spring MVC也不例外,它使用ViewResolver进行视图解析,让用户在浏览器中渲染模型.ViewResolver是一种开箱即用的技术,能够解析JSP.Velocity模板和XSLT等多种视图. Spring处理视图最重要的两个接口是ViewResolver和View.ViewResolver接口在视图名称和真正的视图之间提供映射: 而View接口则处理请求将真正的视图呈现给用户.  1.几种常见的ViewResolver视图解析器

spring mvc velocity多视图

1.ViewResolverUrlBasedViewResolver 这个东西是根据url 进行路由的.网上搜了 1.order 排序,同名出现各种问题 2.XmlViewResolver,BeanNameViewResolver,ResourceBundleViewResolver 这个 根据配置文件去找不同的view 乱码...莫名,而且配置的起来比较麻烦,好处么,就是一个配置文件基本搞定所有页面位置 乱码据说WebApplicationContext 中可以设置某弄过 3.自己写个View

Spring MVC 4之ViewResolver视图解析器

所有的We MVC框架都有一套它自己的解析视图的机制,Spring MVC也不例外,它使用ViewResolver进行视图解析,让用户在浏览器中渲染模型.ViewResolver是一种开箱即用的技术,能够解析JSP.Velocity模板和XSLT等多种视图. Spring处理视图最重要的两个接口是ViewResolver和View.ViewResolver接口在视图名称和真正的视图之间提供映射: 而View接口则处理请求将真正的视图呈现给用户. 1.几种常见的ViewResolver视图解析器

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

一.SpringMVC概述 SpringMVC为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最主流的MVC框架之一. SpringMVC通过一套MVC注解,让POJO成为处理请求的控制器,而无需实现任何接口. 支持RESTFUL风格的URL. 采用了松散耦合可插拔组件结构,更具灵活性和扩展性. 二.使用@RequestMapping映射请求 1.使用@RequestMapping映射请求 SpringMVC使用@RequestMapping注解为控制器指定可以出来那些URL请求. 在

Django中间件部分

一.什么是WSGI? WEB框架的本质是一个socket服务端接收用户请求,加工数据返回给客户端(Django),但是Django没有自带socket需要使用 别人的 socket配合Django才能正常运行,socket有很多如下,  但是它们必须遵循一个规范 WSGI(web服务网关接口)这个所有socket都遵守的规范就是WSGI. Django默认使用: wsgiref socket(并发性能低 测试使用) 在公司生产系统上一般用uwsgi+nginx+Django结合使用 wsgire

django上课笔记1

 一.Django目录介绍 django-admin startproject mysite # 创建名为mysite的项目 cd mysite # 切换到该目录下 python manage.py starapp app01 # 创建app01业务线 project - app01 - admin Django自带后台管理相关配置 - modal 写类,根据类创建数据库表 - test 单元测试 - views 业务处理 - app02 - app03 二.路由系统 url和函数的对应关系 a

python 保障系统(一)

python  保障系统 from django.shortcuts import render,redirect,HttpResponse from app01 import models from django.forms import Form from django.forms import fields from utils.pager import PageInfo # Create your views here. class Logins(Form): # 定一个Form组件验证