django view
当请求一个页面时,Django 创建一个包含有关请求数据的 HttpRequest 对象,并将它作为第一个参数传给视图函数,每个视图函数处理完相应逻辑后返回一个 HttpResponse 对象,HttpRequest 和 HttpResponse 都被定义于 django.http 模块中。
HttpRequest 对象包含当前用户、使用的浏览器、当前请求 URL 的一些信息等。
| 属性 | 类型 | 说明 |
| HttpRequest.body | str | |
| HttpRequest.path | str | 除域名以外的请求路径,以正斜杠开头 |
| HttpRequest.path_info | str | 在某些WEB服务器配置的URL,在主机名之后的部分被分成脚本前缀和路径信息两部分,而 path_info 就是表示路径信息部分的。(脚本前缀可以在WEB服务器中设置) |
| HttpRequest.method | str | HTTP请求的方式,值为 'GET' 或 'POST' |
| HttpRequest.encoding | ||
| HttpRequest.GET | django.http.QueryDict (dict 的子类) | 键可重复,相当于c++的 multimap |
| HttpRequest.POST | django.http.QueryDict | 键可重复,相当于c++的 multimap |
| HttpRequest.REQUEST | django.http.QueryDict | 可以替代 HttpRequest.GET 和 HttpRequest.POST 的使用,不需要分清是GET还是POST即可获取数据,推荐使用。 |
| HttpRequest.COOKIES | dict | 键值都是 str |
| HttpRequest.FILES | 类 dict | 包含所有上传文件。键是 <input type='file' name=""> 中name,值是一个 UploadedFile 对象。 |
| HttpRequest.META | dict | 包含所有本次HTTP请求的 Header 信息,如用户IP和浏览器信息等。 |
| HttpRequest.user | AUTH_USER_MODEL | 必须安装了 AuthenticationMiddleware 才可用 |
| HttpRequest.session | 类 dict | 可读可写,表示当前会话,仅当 django 安装了 session 支持时可用 |
| HttpRequest.urlconf | ||
| HttpRequest.resolver_match |
def search(request):
errors = []
if request.REQUEST.get('uid'):
return render_to_response('result.html',{'query':request.REQUEST.get('uid')})
elif 'uid' in request.REQUEST:
errors.append('uid is null')
return render_to_response('search.html',{'errors':errors})
else:
return render_to_response('search.html',{'errors':errors})
应每次都给成功的GET 或 POST 请求(如果会改动数据库中数据的话)做重定向,这就是web开发的最佳实践。
django 自带一个 form 库,称为 django.forms,它可以进行表单显示、表单验证、当验证失败时重新显示表单、将表单数据转化成相关python类型:
#coding:utf-8
from django import forms from django.conf import settings
settings.configure() class MyForm(forms.Form):
uid = forms.IntegerField(required=True)
name = forms.CharField(required=True,widget=forms.Textarea,label='姓名',max_length=10)
def clean_uid(self):
uid = self.cleaned_data['uid']
if uid<0:
raise forms.ValidationError('uid 不能为负数!')
return uid f = MyForm({'uid':-3,'name':'tianya'}) print '输出MyForm对象:%s' %f
print '绑定:%s' %f.is_bound
print '验证:%s' %f.is_valid()
print '错误:%s' %f.errors
print 'uid字段的错误:%s' %f['uid'].errors
print '整理后的可用数据:%s' %f.cleaned_data
如果要复用 django 中定义好的 model ,可以使用 ModelForm,以避免重复模型描述。
django view的更多相关文章
- django view 装饰器
Django提供了几个可以应用于视图以支持各种HTTP特性的装饰器 Allowed HTTP django.views.decorators.http里的装饰器可以根据请求方法限制对视图的访问. re ...
- Django View(视图系统)
Django View 官方文档 一个视图函数(类),简称视图,是一个简单的 Python 函数(类),它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误 ...
- Django view(视图)
在Django MTV模式中,View视图负责业务逻辑部分,路由系统接收到HTTP请求,并将任务分配给相应的视图函数,由视图函数来负责响应这个请求.无论视图本身包含什么逻辑,都要返回响应. 在这里HT ...
- Django view 视图
request.method 判断请求方式 8种 GET : 获取一个页面 POST: 提交数据 PUT : 上传 HEAD: 不用上传就获取数据 DELETE: 删除 Request-URL 标识的 ...
- Django View视图
视图view 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者 ...
- django view 视图控制之数据返回的视图函数
八.视图 view 概述:views.py定义的python函数,它接受Web请求并且返回Web响应. 有几个页面就有几个视图view user出入url地址,发送request--->urls ...
- Django View 进阶
返回404 from django.http import HttpResponse, HttpResponseNotFound def not_found(request): ) 或 return ...
- django view function
view function 的几种返回值 return HttpResponse(html) return HttpResponseNotFound(html) raise Http404(" ...
- Django View类的解析
class View(object): """ Intentionally simple parent class for all views. Only impleme ...
随机推荐
- ubuntu中maven建的web项目不能将project facet设置为 dynamic web module 3.0
核心参考:maven 不能设置为web3.0人解决方法 error:Description Resource Path Location Type Cannot change ...
- dedecms /include/uploadsafe.inc.php SQL Injection Via Local Variable Overriding Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 . dedecms原生提供一个"本地变量注册"的模拟 ...
- [JAVA 多种方式读取文件]
package com.file; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream ...
- UEditor上传图片到七牛云储存(c#)
我们的网站一般放在虚拟空间或者服务器上,图片如果存在本地目录,会占用很多空间和流量,还增加了负担,好的办法是把图片存放到云储存服务里面,平时用url去拿 云储存:普遍说又拍云和七牛比较好,看到七牛免费 ...
- yield和python(如何生成斐波那契數列)
您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? 我们先抛开 generator,以一个常见的编程题目来展示 yield ...
- POJ 1804 Brainman(归并排序)
传送门 Description Background Raymond Babbitt drives his brother Charlie mad. Recently Raymond counted ...
- cookie的实例
使得Cookie简化用户登陆,要求如下: 1.用户第一次登陆时需要输入用户名和密码 2.当登陆成功后,在Cookie中保存用户的登陆信息 3.设置Cookie有效期为5分钟 4.在有效期内用户再次登陆 ...
- Struts学习总结-02 类型转换
一 类型转换 input.jsp <%@ page language="java" import="java.util.*" pageEncoding=& ...
- BZOJ1202 [HNOI2005]狡猾的商人&&BZOJ3436小K的农场
差分约束第三题 传送门: 很明显的差分约束,d[y]-d[x-1]>=v d[y]-d[x-1]<=v 根据这个建图然后跑bellman-ford就可以了. //BZOJ 1202 //b ...
- D/A转换器实验
1.代码: #include<reg52.h>typedef unsigned char u8;typedef unsigned int u16;void delay (u16 num){ ...