视图函数

视图函数

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

一、视图函数

一定包含两个对象: 
        requset---->用户请求相关的所有信息(对象)
        Httpresponse---->响应字符串

注:它接受的参数,第一个参数默认就是request对象,它的返回值一定要是一个HttpResponse类型

  • FBV --->把视图写成一个函数

    path(‘login/‘,views.Login.as_view(),name="login"),#CBV方式
    		(Login(类),as_view(类方法))
    
    	def func(request):
    		#在函数中如何区分GET请求和POST请求
    		if request.method == "POST":
    			-->这是POST请求 -->提交数据
    		if request.method == "GET":
    			-->这是GET请求 -->获取一个页面
    
    下面是一个返回当前日期和时间作为HTML文档的视图:from django.http import HttpResponse
    import datetime
    
    def current_datetime(request):
        now = datetime.datetime.now()
        html = "<html><body>It is now %s.</body></html>" % now
        return HttpResponse(html)
    

    让我们逐行阅读上面的代码:

    • 首先,我们从 django.http模块导入了HttpResponse类,以及Python的datetime库。
    • 接着,我们定义了current_datetime函数。它就是视图函数。每个视图函数都使用HttpRequest对象作为第一个参数,并且通常称之为request

      注意,视图函数的名称并不重要;不需要用一个统一的命名方式来命名,以便让Django识别它。我们将其命名为current_datetime,是因为这个名称能够精确地反映出它的功能。

    • 这个视图会返回一个HttpResponse对象,其中包含生成的响应。每个视图函数都负责返回一个HttpResponse对象。
    
    
    视图函数,围绕着两个对象进行:HttpResponse和HttpRequest
    
  • CBV --->把视图写成一个类

    导入基类
    	from django.views import View
    	class Login(View):
    		def dispatch(self):
    			在请求前和请求之后执行
    			hasattr("get")
    			具体我们会在后面讲cookie和session时候再讲(登录)
    ?		def get(self, request,):
    ?			-->这是GET请求
    ?		def post(self,request):
    ?			-->这是POST请求
    

二、HttpRequest

request---->请求信息         属性:

request.path       # 获取访问文件路径

request.method属性   #获取请求中使用的HTTP方式(POST/GET)

request.body      #含所有请求体信息 是bytes类型

request.GET        #GET请求的数据(类字典对象)  请求头中的url中?后面拿值
request.POST     # POST请求的数据(类字典对象) 请求体里拿值

request.COOKIES     #包含所有cookies的标准Python字典对象;keys和values都是字符串。

request.FILES:      包含所有上传文件的类字典对象;FILES中的每一个Key都是<input type="file" name="" />标签中
                 name属性的值,FILES中的每一个value同时也是一个标准的python字典对象,包含下面三个Keys:

                 filename:      上传文件名,用字符串表示
                 content_type:   上传文件的Content Type
                 content:       上传文件的原始内容

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

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

request.GET.get(‘name‘)    拿到GET请求里name的值

如果某个键对应有多个值,则不能直接用get取值,需要用getlist,如:

request.POST.getlist("hobby")

请求url:http://127.0.0.1:8000/index.html/23?a=1

request.path : 请求路径
       request.path结果为:/index.html/23

request.get_full_path()
       request.get_full_path()结果为:/index.html/23?a=1

 方法:

get_full_path()
注意:键值对的值是多个的时候,比如checkbox类型的input标签,select标签,需要用:request.POST.getlist("hobby")

  

三、HttpResponse

https://www.cnblogs.com/huchong/p/7718393.html

Form表单提交数据、三要素:

  1.action="提交的URL地址",method="post"

  2. form表单里必须包含一个submit按钮

  3.input、select、checkbox、radio、textarea、file必须有name的属性

原文地址:https://www.cnblogs.com/mainstream/p/11073389.html

时间: 2024-07-30 06:10:38

视图函数的相关文章

django RESTful研究一第一个测试例子(用序列化器编写原生的Django视图函数)

让我们看看通过 Serializer 类怎样来编写 API 的视图函数,现在我们不会使用 REST 框架中的特性,仅仅写原生的Django视图函数. 一.我们创建一个 HttpResponse 的子类,用来将任何数据转换成 JSON格式. 编辑snippets/views.py,如下: from django.http import HttpResponse from django.views.decorators.csrf import csrf_exempt from rest_framew

Flask04 后台获取请求数据、视图函数返回类型、前台接受响应数据

1 后台获取请求数据 1.1 提出问题 前台发送请求的方式有哪些 后台如何获取这些请求的参数 1.2 前台发送请求的方式 GET.POST.AJAX 点睛:如果不指定请求方式,浏览器默认使用GET请求 点睛:进入登录页面的请求和提交登录信息的请求使用的路径都是一样的,只不过前往登录页面的请求是GET请求,服务器返回的是一个静态的页面:当录入登录信息点击确定后就会向后台发送一个POST请求,后台经过逻辑处理后,如果登录信息正确就会返回一个静态主页面(注意:虽然这两个请求都是使用的一样的路径,但是我

2.2、路由和视图函数

客户端(例如 Web 浏览器)把请求发送给 Web 服务器,Web 服务器再把请求发送给 Flask程序实例.程序实例需要知道对每个 URL 请求运行哪些代码,所以保存了一个 URL 到Python 函数的映射关系.处理 URL 和函数之间关系的程序称为路由. 在 Flask 程序中定义路由的最简便方式,是使用程序实例提供的 app.route 修饰器,把修饰的函数注册为路由.下面的例子说明了如何使用这个修饰器声明路由: @app.route('/index') def index(): ret

Django视图函数

一.视图函数 1. 视图函数的第一个参数一定是一个HTTPRequest类型的对象,这个对象是Django自动创建的,具体形参名通常用request.通过这个对象,可以调用请求的一些参数,比如request.path,request.method,request.META去查看请求信息. 2. 视图函数必须返回一个HTTPResponse类型的对象,这个对象必须是人工创建的.

第三百零五节,Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性

Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性 Views(视图函数)逻辑处理,最终是围绕着两个对象实现的 http请求中产生两个核心对象: http请求:HttpRequest对象 http响应:HttpResponse对象 所在位置:django.http 之前我们用到的参数request就是HttpRequest     HttpRequest对象 逻辑处理函数的第一个形式参数,接收到的就是HttpRequest对象,这个对象里封装着用户的各种请求信息,通过

python--django之视图函数

1.视图函数中的两个对象 1.1.request(请求对象): request.GET {} get请求数据 request.POST {} post请求数据 request.POST.getlist() request.method 请求方式 request.path 请求路径 request.get_full_path() 请求全路径 1.2.response(响应对象): Httpresponse() 1.2.1.render(request,template_name,context)

django框架----django 模型 URL配置 视图函数

下载Django 创建一个项目 在命令行中,使用 cd 命令进入你想存储代码所在的目录,然后运行以下命令: django-admin.py startproject mysite   让我们来看看 startproject 都创建了些什么: mysite/ manage.py #一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互. mysite/ __init__.py settings.py #Django 项目的设置/配置 urls.py #Django 项目的 URL

Django_视图函数

视图函数 def example_edit(request,nid,xid): request.method request.GET request.POST return HttpResponse('文本') return redirect('url') # 打开模板,读取数据到内存 # {'k1':'v1'},对模板中的特殊字符进行"渲染" # 生成不含特殊标签(已经被替换完毕)的字符串 return render(request,'模板路径',{'k1':'v1'}) 原文地址:

Django学习笔记第八篇--实战练习四--为你的视图函数自定义装饰器

零.背景: 对于登录后面所有视图函数,都需要验证登录信息,一般而言就是验证cookie里面的一些信息.所以你可以这么写函数: 1 def personinfo(request): 2 if request.COOKIES.get("login_flag") == "1": 3 return HttpResponse("Success!") 4 else: 5 return HttpResponse("Failed!") 这样就

Flask 给视图函数增加装饰器

在@app.route的情况下增加装饰器的写法: 1 from flask import Flask,request,render_template,redirect,session,url_for,views 2 from flask import render_template 3 4 app = Flask(__name__) #实例化flask对象 5 app.debug = True #能够随时更改自动重启,不加的话每次更改代码需要手动重启 6 app.config['SECRET_K