IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django学习——3.Django的视图层 -> 正文阅读

[Python知识库]Django学习——3.Django的视图层

项目名:mydemo2

Python版本:3.7.0

Django版本:3.2.0


Django的视图层(View)介绍

  • Django框架中的视图(View)是用来负责处理用户请求和返回响应的逻辑程序。
  • 视图(View)简而言之就是一个Python的函数或方法,接受Web请求并且返回Web响应。
  • 无论视图本身包含什么逻辑,都要返回响应,响应可以是网页的HTML内容,重定向或404错误,XML文档或图像。
  • 视图层中包含两个重要对象:请求对象(request)和响应对象(HttpResponse)。
  • 视图的代码通常是放在view.py文件中,此文件放在项目主目录或应用程序目录中。?

1.返回一个模板

from django.shortcuts import render

def index(request):
    return render(request,'index.html')

2.返回当前时间的简单视图

from django.http import HttpResponse
import time

def nowtime(request):
    now=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
    html="<html><body>现在的时间是%s</body><html>"%now
    return HttpResponse(html)

?

3.返回一个错误页面?

def error(request):
    # 直接返回一个404,没有去加载404的模板页面
     return HttpResponseNotFound('<h1>Page not found</h1>')

    # 可以直接返回一个status状态码
    # return HttpResponse(status=403)

    # 返回一个404的错误页面
    #raise Http404("Poll does not exist")

?

?

?

?4.重定向

重定向就是通过方法将网络请求重新定向跳转到其他位置

from django.shortcuts import redirect
from django.urls import reverse

def resp(request):
    # redirect重定向  reverse反向解析url地址
    return redirect(reverse('nowtime'))  #重定向到时间显示页面

    #执行一段js代码,用js进行重定向
    #return HttpResponse('<script>alert("跳转成功");location.href = "/nowtime"; </script>')

    # 加载一个提醒信息的跳转页面
    # context = {'info': '跳转成功'}
    # return render(request, 'info.html', context)

?5.基于类的基本视图

views.py

from django.views import View

class MyView(View):
    def get(self, request, *args, **kwargs):
        return HttpResponse('这是一个类')

myapp/urls.py

from django.urls import path,include
from . import views
from myapp.views import MyView

urlpatterns = [
    path('',views.index,name='index'),  #首页
    path('nowtime/',views.nowtime,name='nowtime'),  #当前时间
    path('error/',views.error,name='error'),  #错误页面
    path('resp/',views.resp,name='resp'),  #重定向
    path('class/',MyView.as_view(),name='class')  #基于类的基本视图
]

其中as_view()是接受请求并返回响应的可调用视图['get','post','put', 'patch','delete,'options'.]


HttpResponse对象?

  • HttpResponse():返回文本,参数为字符串,字符串中写文本内容。如果参数为字符串里含有 html 标签,也可以渲染。
  • 在django.http模块中定义了HttpResponse对象的API。
  • HttpRequest对象由Django自动创建,HttpResponse对象由程序员创建。
  • 每个视图函数都必须返回一个HttpResponse对象或HttpResponse子对象。

返回模板、返回文本和重定向上述示例都已说明,下面主要介绍子类JsonResponse和set_cookie方法

1.子类JsonResponse

  • 返回json数据,一般用于异步请求
  • 帮助用户创建JSON编码的响应
  • JsonResponse的默认Content-Type为application/json
from django.http import JsonResponse

#json数据的响应
def response_json(request):
    data=[
        {'id': 101, 'name': 'aa', 'age': 20},
        {'id': 102, 'name': 'bb', 'age': 23},
        {'id': 103, 'name': 'cc', 'age': 25},
        {'id': 104, 'name': 'dd', 'age': 27},
    ]
    return JsonResponse({'data':data})

?注:响应体中只支持字典类型的数据,因此要先将data列表封装成字典。

?2.set_cookie方法

  • Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。
  • 服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。
  • Cookies最典型的应用是判定注册用户是否已经登录网站
def cookie(request):
    # 获取当前的 响应对象
    response = HttpResponse('set_cookie方法')
    # 使用响应对象进行cookie的设置
    response.set_cookie('first_cookie', 'abc123')
    # 返回响应对象
    return response


HttpRequest对象?

  • 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象
  • 视图函数的第一个参数是HttpRequest对象
  • 在django.http模块中定义了HttpRequest对象的API

属性(若无特别说明,则都是只读属性)

  • path:一个字符串,表示请求的页面的完整路径,不包含域名

  • method:一个字符串,表示请求使用的HTTP方法,常用值包括:'GET'、'POST'

  • encoding:一个字符串,表示提交的数据的编码方式(这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,如果为None,则使用默认设置utf-8)

  • GET:一个类似于字典的对象,包含get请求方式的所有参数

  • POST:一个类似于字典的对象,包含post请求方式的所有参数

  • FILES:一个类似于字典的对象,包含所有的上传文件

  • COOKIES:一个标准的Python字典,包含所有的cookie,键和值都为字符串

  • session:一个既可读又可写的类似于字典的对象,表示当前的会话,只有当Django 启用会话的支持时才可用,详细内容见“状态保持”

方法?

  • is_ajax():如果请求是通过XMLHttpRequest发起的,则返回True

QueryDict对象

  • 定义在django.http.QueryDict
  • request对象的属性GET、POST都是QueryDict类型的对象
  • 与python字典不同,QueryDict类型的对象用来处理同一个键带有多个值的情况
  • 方法get():根据键获取值

get方法只能获取键的一个值,如果一个键同时拥有多个值,获取最后一个值

dict.get('键',default),或dict['键']

  • 方法getlist():根据键获取值?

将键的值以列表返回,可以获取一个键的多个值

?dict.getlist('键',default)

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-25 12:29:51  更:2021-10-25 12:31:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:49:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码