zoukankan      html  css  js  c++  java
  • 007---Django的视图层

    视图函数

    一个视图函数,简称视图,是一个简单的python函数。它接收web请求并且返回web响应.
    1、一张网页的HTML内容
    2、一个重定向
    3、一个404错误
    4、一个xml文档
    5、一个字符串
     1 def current_time(request):
     2     """
     3     1、首先,我们从django.shortcuts模块导入了HttpResponse类。以及Python的datetime库
     4     2、然后,定义了current_time函数,这个函数就是视图函数,每个函数都会有第一个参数request,通常称之为request。
     5         视图函数的名称不重要,能反应其功能就ok
     6     3、这个视图函数会返回一个HttpResponse对象。
     7     :param request: request  接收请求
     8     :return: HttpResponse    返回响应
     9     """
    10     now = datetime.datetime.now()
    11     html = "<html><body>当前时间:%s</body></html>" % now
    12     return HttpResponse(html)
    无论视图本身包含什么逻辑,都要返回响应。
    视图层,熟练掌握;两个对象即可:请求对象(request)和响应对象

    HttpRequest对象

    request属性

    def index(request):
    
        # 请求方式
        print(request.method)           # 最常见的有GET、POST两种
    
        # 请求数据  django的内置数据类型,其实跟python的字典一样,get取值
        # 判断是否是POST方法,不能用if request.POST:pass 应该使用if request.method == 'POST':pass
        # 还有一些键值对是多个值的时候,比如说checkbox,select标签就要用request.POST.getlist('hobby')来取值
        print(request.GET)              # <QueryDict: {'name': ['1'], 'age': ['2']}>
        print(request.POST)             # <QueryDict: {'name': ['111'], 'age': ['222']}>
    
    
        # 请求路径  一个字符串 不包含域名
        '''
        url:协议://ip:port/路径/?参数
        '''
        print(request.path)             # /index/   
    print(request.path_info) # 和path类似。最后使用这个
    # 文件 file_obj = request.FILES # request.FILES获取上传文件信息 只有在POST切form带有enctype="multipart/form-data" 的情况下才会 # 包含数据。否则,FILES 将为一个空的类似于字典的对象。 print(file_obj) # 获取文件名称 file_obj.name # request.COOKIES 一个标准的python字典,包含所有的cookie。键值都是字符串 # request.session 一个既可读又可写的类似于字典的对象,表示当前的会话。只有当Django 启用会话的支持时才可用。和cookie一样,都是会话相关 # request.user 用户认证组件下使用,可用来判断用户是否登陆 # 方法 print(request.get_full_path()) # /index/?name=1&age=2 有路径 还有携带的参数 print(request.is_ajax()) # 判断请求方式是否为ajax发起的 bool  
       print(request.get_host()) # 获取用户ip和端口
    python = 'Hello Python' # return HttpResponse("<h1 style='color:red'>1314</h1>") return render(request, 'index.html', {"python": python})

    HttpResponse对象

    响应对象主要有三种形式:

    1、HttpResponse()

    2、render()

    3、redirect()

    HttpResponse()括号内直接跟一个具体的字符串作为响应体,比较直接很简单。所以介绍后两种形式

    render

    render(request, template_name[, context])

    参数:

      request:用于生成响应的请求对象

      template_name:要使用的模版的完整名称,可选

      context:一个字段,添加到模版上下文的字典,视图将在渲染模版之前调用它。

    作用:render()就是将一个模版页面的模版语法进行渲染,最终渲染成一个html响应体。

    redirect

    传递一个重定向的硬编码url 也可以是一个reverse反向解析的url

    return redirect('/some/url')

  • 相关阅读:
    学会读懂 MySql 的慢查询日志
    Azure Mobile App
    ZOJ 3810 A Volcanic Island (2014年牡丹江赛区网络赛B题)
    学习日记之观察者模式
    Linux C高级编程——网络编程基础(1)
    Atitit.ati&#160;&#160;str&#160;&#160;字符串增强api
    ListView 自己定义BaseAdapter实现单选打勾(无漏洞)
    TintTo和TintBy
    cc.Sprite
    手机网页一行中文字数上限
  • 原文地址:https://www.cnblogs.com/xjmlove/p/9897600.html
Copyright © 2011-2022 走看看