Views

Views

Django中views里面的代码就是一个一个函数逻辑, 处理客户端(浏览器)发送的HTTPRequest, 然后返回HTTPResponse,

http请求中产生两个核心对象:

http请求:HttpRequest对象

http响应:HttpResponse对象

所在位置:django.http

  当一个页面请求来时,Django把请求的metadata数据包装成一个HttpRequest对象,然后Django加载合适的view方法,把这个HttpRequest 对象作为第一个参数传给view方法。任何view方法都应该返回一个HttpResponse对象

1、views.py中编写简单的逻辑函数

from django.shortcuts import render,render_to_response
from django.http.response import HttpResponse

# Create your views here.
def login(request):
    if request.method==‘POST‘:
        user=request.POST.get(‘username‘, None)
        pwd=request.POST.get(‘password‘,None)
        result=UserInfo.objects.filter(username=user,paw=pwd).count()
        if result==1:
            return HttpResponse(‘登录成功‘)
        else:
            return render_to_response(‘login.html‘,{‘status‘:‘用户名或密码错误!‘})
    else:
        return render_to_response(‘login.html‘)

1、HttpRequest对象的属性和方法

path    #请求页面的全路径,不包括域名

method     #请求中使用的HTTP方法的字符串表示。全大写表示。如:
   if  Request.method==‘GET‘:
        pass
   elif    request.method==‘POST‘:
        pass

GET      #包含所有HTTP GET参数的类字典对象

POST    #包含HTTP POST参数的类字典对象
             #服务器收到空的POST请求的情况也是可能发生的,也就是说,表单form通过
#              HTTP POST方法提交请求,但是表单中可能没有数据,因此不能使用
#              if req.POST来判断是否使用了HTTP POST 方法;应该使用  if req.method=="POST"

COOKIES:   #包含cookie的标准Python字典对象;keys和values都是字符串

FIlES:        #包含所有上传文件的类字典对象;FILES中的每一个Key都是<input type=‘file‘  name=‘‘/> name属性的值,FILES中的每一个values同时也是一个标准的Python字典对象,包含下面三个keys:
#            filesname:上传文件名,用字符串表示
#            content_type:上传文件的Content_type
#            content:上传文件的原始内容

user        #是一个Django.contrib.auth.models.User对象,代表当前登录的用户,如果访问用户当前没有登录,user将被初始化为django。contrib.auth.models.AnonymousUser的实例。你可以通过user的is_authenticated()方法来辨别用户是否登录:if req.user.is_authenticated();只有激活django中的AuthentionMiddleware时该属性才可用

session:   #唯一可读写的属性,代表当前回话的字典对象;自己有激活django中的session支持时该属性才可用

#方法
get_full_path():  #比如http://127.0.0.1:8000/index33/?name=123
#req.get_full_path()得到的结果就是/index33/?name=123
req.path --> /index33

注意一个常用方法:

request.POST.getlist(‘key‘)    #django中同通过getlist() 接收页面form的post数组

#如果使用request.POST.get(‘key‘)方法,只能获得数组的最后一个元素,必须使用getlist才能获取整个数组,以Python列表的形式返回所请求键的数据。 若键不存在则返回空列表。 它保证了一定会返回某种形式的list。

2、HttpResponse对象:

  对于HttpRequest对象来说,是由django自动创建的,但是,httpResponse对象就必须我们自己创建,每个view请求处理方法必须返回一个HttpResponse对象。

HttpResponse类在django.http.HttpResponse

在HttpResponse对象上扩展的常用方法:

页面渲染:         render()(推荐)         render_to_response()

页面跳转:         redirect("路径")

locals():    可以直接将函数中所有的变量传给模板
时间: 2024-09-30 11:14:00

Views的相关文章

使用TDD理解views.py与urls.py的关系

首先必须对MVC的概念有初步的认识,django也遵循这样一套规范,views.py相当于视图函数,是整个架构中的处理引擎,而urls.py的作用就是将用户请求送入这样的引擎. 项目结构: urls.py: from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ # Examples: #url(r'^$', 'mysite.views.home', name='home

django views显示中文

views.py #coding:utf-8 from django.http import HttpResponse def index(request):     return HttpResponse(u"lannyMablog")

django导入 views.py

网上找了各种教程..均无解....自己摸索出来了..分享 给大家... 首先INSTALLED_APP 加入 自己的 app pili,然后如下图 from App名称 import views 就 ok了!!!! 本来很简单で意见事情,但是自己一弄,就蒙了..使用 import pili  然后  pili.views.TestUEditor 完全没作用,提示未找到...无语

排球记分员计分程序(六)————Views视图的编码与设计

一.Views视图的编码与设计 1.在上一步创建新的 DuiWuController控制器时,系统在Views\DuiWu文件夹中创建新的Create.cshtml. Delete.cshtml. Details.cshtml. Edit.cshtml和Index.cshtml 文件. 2.查看原来的Index.cshtml 文件,代码如下图所示: @model IEnumerable<排球计分程序.Models.DuiWu> @{    ViewBag.Title = "Index

API Guide(三)之Views

Class-based Views Django's class-based views are a welcome departure from the old-style views. - Reinout van Rees REST框架提供了一个APIView类,which subclasses Django's View class. APIView类与普通View类有以下不同: 传递给the handler methods 的Requests 将是REST框架的Request实例,而不是

(十)Views 中的 cshtml 文件 using model

如果一个 model 在多个页面都有用到,可以在 Views 文件夹下的 web.config 文件中进行配置,这样不用在 cshtml 文件中 using ,同时 model 也是强类型的.如果不进行 using,也不在 web.config 文件下进行配置,则 model 是动态类型的. 如何配置:在 Views 下的 web.config 文件中的 system.web.webPages.razor 节点下的 namespaces 节点下配置 add namespaces 就可以了.例如:

NET Core 的 Views

NET Core 十种方式扩展你的 Views 原文地址:http://asp.net-hacker.rocks/2016/02/18/extending-razor-views.html作者:Jürgen Gutsch翻译:杨晓东(Savorboard) 现在,已经有很多种方式来扩展Razor视图了,我们循循渐进,先从最简单的开始.如果你之前熟悉MVC5(以及之前的MVC)中的视图的话,有一部分你应该已经很熟悉了.在新的ASP.NET Core 中,那些你熟悉的方式有一部分仍然能用,只是Cor

Displaying Your Views at Runtime

UIKit automatically loads views from your storyboard file when they are needed. As part of the loading process, UIKit performs the following sequence of tasks: Instantiates views using the information in your storyboard file. Connects all outlets and

爱上MVC~在Views的多级文件夹~续~分部页的支持

回到目录 之前写的一篇文章,主要针对View视图,它可以放在N级目录下,不必须非要在views/controller/action这种关系了,而在程序运行过程中,发现分页视图对本功能并不支持,原因很简单,在RazorViewEngine有不同的属于来修饰这两个东西,对于View的查找,通过ViewLocationFormats来定义,而分部视图的查找通过PartialViewLocationFormats来定义,它们定义了视图的查询范围,如~/Views/LindAdmin/{1}/{0}.cs