Django视图层(views.py)

视图函数

  接受Web请求并且返回Web响应。由此,视图函数应该接收请求对象HttpRequest,并返回响应对象HttpResponse。

request

django将请求报文中的请求行、首部信息、内容主体封装成 HttpRequest 类中的属性。

request.scheme  # 请求的协议,一般为http或者https,字符串格式(以下属性中若无特殊指明,均为字符串格式)
request.body     #http请求的主体,二进制格式。
request.path         # 所请求页面的完整路径(但不包括协议以及域名),也就是相对于网站根目录的路径。
request.path_info   # 获取具有 URL 扩展名的资源的附加路径信息。相对于HttpRequest.path,使用该方法便于移植。
request.method  # 获取该请求的方法,比如: GET   POST PUT.........
request.encoding  # 获取请求中表单提交数据的编码。
request.content_type  # 获取请求的MIME类型(从CONTENT_TYPE头部中获取)。
request.content_params  # 获取CONTENT_TYPE中的键值对参数,并以字典的方式表示。
request.GET  # 返回一个 querydict 对象(类似于字典),该对象包含了所有的HTTP GET参数
request.POST  # 返回一个 querydict ,该对象包含了所有的HTTP POST参数,通过表单上传的所有字符都会保存在该属性中。
request.COOKIES  # 返回一个包含了所有cookies的字典。
request.FILES  # 返回一个包含了所有的上传文件的querydict对象。通过表单所上传的所有文件都会保存在该属性中。key的值是input标签中name属性的值,value的值是一个UploadedFile对象
request.META  # 返回一个包含了所有http头部信息的字典
request.site  # 中间件属性
request.session  # 中间件属性
request.user(用户认证组件下使用)  #中间件属性,一个 AUTH_USER_MODEL 类型的对象,表示当前登录的用户。
  # 该类有许多字段,属性和方法。列举几个常用的:
        # 字段:
        # username,first_name,last_name,email,password,groups,user_permissions,is_staff(布尔值,标明用户是否可以访问admin页面),
        # is_superuser,last_login(上一次登陆时间),date_joined(用户创建时间)
        # 属性:is_authenticated   布尔值,标志着用户是否已认证。
        # 方法:
        # HttpRequest.user.get_username()获取username。尽量使用该方法来代替使用username字段
        # HttpRequest.user.get_full_name()获取first_name和last_name
        # HttpRequest.user.short_name()获取first_name
        # HttpRequest.user.set_password(raw_password)
        # HttpRequest.user.check_password(raw_password)
        # HttpRequest.get_host()返回请求的源主机。
        # HttpRequest.get_port()
        # HttpRequest.get_full_path()返回完整路径
        # HttpRequest.bulid_absolute_uri(location)  返回location的绝对uri,location默认为request.get_full_path()。

HttpResponse

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

  • HttpResponse()

    传入字符串作为响应体

    example1:    

def test_name(request):
    return HttpResponse("testname")
  • example2:
  • def test(request):
        return HttpResponse(reverse("app01:test"))
    
  • render()

    render(request, template_name[, context])

    结合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的 HttpResponse 对象。

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

        template_name:要使用的模板的完整名称

       可选的参数 context:添加到模板上下文的一个字典。默认是一个空字典。如果字典中的某个值是可调用的,视图将在渲染模板之前调用它。

def test(request):
    # 测试反向解析
    return render(request,‘url_test.html‘)
  • redirect()

    参数可以是一个URL(或URL的别名)

    example1:

    在views.py中  

def testname(request):
    # 此处tn是别名
    return redirect("tn")

    在urls.py中

urlpatterns = [
    path(‘test_name/‘,views.test_name,name="tn"),
]

  example2:    

def view_test(request):
    return redirect("https://www.cnblogs.com/shannen/")

  example3:

def view_test(request):
    return redirect("/test/url/")

  也可以是一个视图函数

  example4:

def view_test(request):
    # return redirect(test)
    return redirect(test_my_converter,2019)

def test(request):
    # 测试反向解析
    return render(request,‘url_test.html‘)

def test_my_converter(request,year):
    return HttpResponse("test_my_converter<br>year:"+str(year))

  redirect默认返回一个临时重定向,设置参数permanent=True时,将返回一个永久重定向。

  临时重定向与永久重定向:

    临时重定向:

      状态码:302

      表示原地址仍旧可以访问,只是临时地从原地址重定向到目标地址

    永久重定向:

      状态码:301

      表示原地址永久失效,

原文地址:https://www.cnblogs.com/shannen/p/11283049.html

时间: 2024-10-09 23:14:00

Django视图层(views.py)的相关文章

肆拾陆 ---django视图层与模板层

django视图层与模板层 一.视图层 1.1 HttpResponse.render.redirect ? HttpResponse:返回字符串: ? redirect:重定向 ? render:返回一个html页面,也可以给模板传值 ? render的逻辑原理: from django.template import Template,Context def index(request): res = Template('<h1>{{ user }} </h1>') con =

Django - - - -视图层之视图函数(views)

阅读目录(Content) 视图层之视图函数(views) 一个简单的视图 1.HttpRequest 2.HttpResponse 1.render 函数 2.redirect 函数 对比render与redirect: 回到顶部(go to top) 视图层之视图函数(views) 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是任何东西都可以.

Python之路【第二十八篇】:django视图层、模块层

1.视图函数 文件在view_demo 一个视图函数简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是任何东西都可以.无论视图本身包含什么逻辑,都要返回响应.代码写在哪里也无所谓,只要它在你的Python目录下面.除此之外没有更多的要求了——可以说“没有什么神奇的地方”.为了将代码放在某处,约定是将视图放置在项目或应用程序目录中的名为views.py的文件中. 视图

Django 视图系统(views)

介绍 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. 无论视图本身包含什么逻辑,都要返回响应.代码写在哪里也无所谓,只要它在你当前项目目录下面. 除此之外没有更多的要求了——可以说“没有什么神奇的地方”.为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.py的文件中. 视图示例 下面是一

django视图层与模板层

视图层 1.小白必会三板斧 1.HttpResponse # 返回字符串 2.render # 返回一个html页面 还可以给模板传递 from django.template import Template,Context def index(request): res = Template("<h1> {{ user }} </h1>") con = Context({'user':{'username':'jason','pwd':'123'}}) ret

Django之视图(views.py)

1,视图的作用就是URL和模板的连接器,我们在浏览器中输入URL,Django通过视图找到相应的模板,然后返回给浏览器. 2,视图的URL配置过程:setting中的:ROOT_URLCONF,然后是项目中的url.py的配置,然后是APP中的url.py的配置 setting: ROOT_URLCONF = 'lianxi03.urls' 项目url: from django.contrib import admin from django.urls import path,include u

django之视图系统 views.py

一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 视图的实现可以基于两种方法: 1 基于函数的形式 FBV 2 基于类的方式实现 原文地址:https://www.cnblogs.com/mmyy-blog/p/9826001.html

Django视图层——中间件概述

参考文献: https://docs.djangoproject.com/zh-hans/2.0/topics/http/middleware/ 中间件定义 中间件是一种嵌入django的request和response请求处理的hooks框架.它是一种轻量级的改变Django全局输入或输出的插件. 每个中间件都有一个特定的功能.比如,Django包含一个AuthenticationMiddleware中间件,可以通过sessions将用户和请求关联. 写自定制的中间件 中间件是可以调用的,它可

Django视图层、模板层

过滤器方法 upper 大写方式输出 add 给value加上一个数值 capfirst 第一个字母大写 center 输出指定长度的字符串,把变量居中 cut 删除指定字符串 date 格式化日期 default 如果值不存在,则使用默认值代替 length 返回列表中元素的个数或字符串长度 length_is 检查列表,字符串长度是否符合指定值 标签的方法 for标签 {% for 临时遍历 in 序列%}....{%endfor%} forloop.counter 当前循环的索引值(从1开

Django之views.py视图函数学习

视图函数: 视图函数时存在django项目中的应用程的一个名为views.py的文件模块: 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 一个简单的视图: 下面是一个以HTML文档的形式返回当前日期和时间的视图: views.py 1 from django.http import HttpResponse 2 3 import datetime 4 5 def current_datetime(request): 6 7 now =