• django 中的视图(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
    View Code

    注意一个常用方法:

    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():    可以直接将函数中所有的变量传给模板
  • 相关阅读:
    c# 通过Windows服务启动外部程序
    MVC 视图页对数字,金额 用逗号 隔开(数字格式化)
    mvc4 @foreach 如何写@if 判断
    最小生成树Prim算法和Kruskal算法
    Triangle War
    定制kickstart重建CentOS7.5镜像用于U盘引导安装
    有限状态机FSM
    最短路经算法简介(Dijkstra算法,A*算法,D*算法)
    利用/dev/urandom文件创建随机数
    A*搜索算法
  • 原文地址:https://www.cnblogs.com/freely/p/6909913.html
Copyright © 2020-2023  润新知