摘要:概述作用视图接收请求并返回响应方法就是在视图里使用函数处理请求。
概述
作用:视图接收WEB请求并返回WEB响应方法:1. FBV(function base views) 就是在视图里使用函数处理请求。
2. CBV(class base views) 就是在视图里使用类处理请求。
响应: 可以是一个HTML页面,一个重定向,一个404错误、一个JSON数据等等
过程:
URLConf 视图函数 HttpRequest对象概述: 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象; 视图函数的一个形参就是HttpRequest对象属性 方法
is_ajax(): 如果请求是通过XMLHTTPRequest类发起的,返回True
QueryDict对象
clipboard.png
http://127.0.0.1:8000/get1/?a=1&b=2&c=3
def get1(request): a = request.GET.get("a") b = request.GET.get("b") c = request.GET.get("c") return HttpResponse(a+"-"+b+"-"+c)
http://127.0.0.1:8000/get2/?a=1&a=2&c=3
def get2(request): alist = request.GET.getlist("a") c = request.GET.get("c") return HttpResponse(alist[0]+"-"+alist[1]+"-"+c)POST属性
使用表单提交,需要将settings.py文件中的"django.middleware.csrf.CsrfViewMiddleware",中间件去掉
或者加上{%csrf_token}
注册
#views.py def register(request): if request.method == "GET": return render(request, "register.html") else: username = request.POST.get("username") passwd = request.POST.get("passwd") hobbys = request.POST.getlist("hobby") print(username, passwd, hobbys) return HttpResponse("注册成功")HttpResponse对象
概述: HttpRequest对象由Django自动创建的,但是HttpResponse对象由程序员创建的;存储服务器响应给客户端的数据用法
常见的MIME类型(通用型):
超文本标记语言文本 .html text/html
xml文档 .xml text/xml
XHTML文档 .xhtml application/xhtml+xml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文档 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG图像 .png image/png
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
任意的二进制数据 application/octet-stream
属性属性 | 描述 |
---|---|
content | 表示返回的内容,字符串类型 |
charset | 表示response采用的编码字符集,字符串类型 |
status_code | 响应HTTP的状态码 |
content_type | 指定输出的MIME类型 |
init: 使用页面实例化HttpResponse对象
write(content):
# 以文件的方式写入,将 content 写到报文的主体中,这使得 HttpResponse 的实例类似于文件对象 def index(request): response = HttpResponse() response.content = "sunck is a good man" response.charset = "utf-8" response.write("!") response.write("very good!") return response
flush() : 以文件的方式输出缓冲区; 在flush之后就不要在写write了
set_cookie():
原型:set_cookie(self, key, value="", max_age=None, expires=None, path="/", domain=None, secure=False, httponly=False)
作用: 设置cookie,cookie是保存在客户端的信息,以键值对的形式保存
参数:
key : cookie的键
value:cookie的值
max_age: 过期时间 单位秒
expires:设置过期时间 datetime.datetime 对象
示例:
def setcookie(request): response = HttpResponse("sunck is a handsome man") response.set_cookie("sunck", "good") return response request.COOKIES.get("sunck")子类HttpResponseRedirect
功能: 重定向,服务器端跳转
实现
from django.http import HttpResponse, HttpResponseRedirect def indexTemp(request): # 重定向到/index/ return HttpResponseRedirect("/index/") from django.shortcuts import render, redirect from django.http import HttpResponse, HttpResponseRedirect def indexTemp(request): # 重定向到/index/, HttpResponseRedirect很少用了,一般用redirect # return HttpResponseRedirect("/index/") return redirect("/index")子类JsonResponse
返回JSON数据,一般用于异步请求
优点: 帮助用户创建JSON编码响应; 参数是字典对象,如果传入不是字典格式比如列表,设置参数safe=False;JsonResponse的默认Content-Type为application/json,不需要我们写了。
状态保持 概述 启用session# settings.py 默认已经启用 "django.contrib.sessions", "django.contrib.sessions.middleware.SessionMiddleware"使用session
启用session后,每个HttpRequest对象都将具有一个session属性,它是一个类似字典的对象
方法 | 解释 |
---|---|
get(key, default=None) | 根据键获取会话的值 |
clear() | 清除所有会话 |
flush() | 删除当前的会话并删除会话的cookie |
del request.session[键] | 删除会话 |
def home(request): userAccount = request.session.get("userAccount", default="未登录") return render(request, "home.html", {"userAccount":userAccount}) def cart(request): userAccount = request.session.get("userAccount", default="未登录") return render(request, "cart.html", {"userAccount":userAccount}) def login(request): if request.method == "GET": fromPath = request.GET.get("from") return render(request, "login.html", {"fromPath":fromPath}) else: userAccount = request.POST.get("userAccount") passwd = request.POST.get("passwd") # 从哪里来 fromPath = request.GET.get("from") # 验证 if userAccount == "sunck" and passwd == "sunck1999": #登陆成功 #状态保持,将用户名写入session request.session["userAccount"] = userAccount fromPath = "/" + fromPath + "/" return redirect(fromPath) else: #登陆失败 return redirect("/login/?from=%s"%fromPath) from django.contrib.auth import logout def quit(request): logout(request) return redirect("/home/")过期时间 存储session
基于数据库的会话: 默认的会话存储方式
SESSION_ENGINE="django.contrib.sessions.backends.db"
基于缓存的会话: 只存在本地内存中,如果丢失则不能找回,比数据库的方式读写更快
SESSION_ENGINE="django.contrib.sessions.backends.cache"
数据库用于做持久化,缓存用于提高效率,先去缓存中取数据,缓存没有再去数据库中取,然后在缓存中存一份
SESSION_ENGINE="django.contrib.sessions.backends.cached_db"
使用redis缓存sessionSESSION_ENGINE="redis_sessions.session" SESSION_REDIS_HOST="localhost" SESSION_REDIS_PORT=6379 SESSION_REDIS_DB=0 SESSION_REDIS_PASSWORD="" SESSION_REDIS_PREFIX="session" #通过redis-cli客户端可以查看: 127.0.0.1:6379> select 0 OK 127.0.0.1:6379[4]> keys * 1) "session:0bjyuegx0i5ivyuzpb8ezgo0b35u2z4v"
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/42251.html
摘要:概述作用视图接收请求并返回响应本质视图就是一个函数,被定义在文件中响应可以是一个页面,一个重定向,一个错误一个数据等等过程视图函数对象概述服务器接收到协议的请求后,会根据报文创建对象视图函数的一个形参就是对象属性方法如果请求是通过类发起的, 概述 作用:视图接收WEB请求并返回WEB响应本质: 视图就是一个python函数,被定义在views.py文件中 响应: 可以是一个HTML页面...
摘要:是开发最常用的框架之一,跟进它的最新变化绝对是必须的。年月日,官方发布了版本,成为多年来的第一次大版本提升,那么对广大使用者有哪些变化和需要注意的地方呢一兼容性支持和。 Django 是 Python Web 开发最常用的框架之一,跟进它的最新变化绝对是必须的。 2017年12月2日,Django官方发布了2.0版本,成为多年来的第一次大版本提升,那么2.0对广大Django使用者有哪...
摘要:编程从入门到实践笔记。执行命令后,项目的根目录下会多出一个名为的数据库文件。下面创建一个主题类用户学习的主题返回模型的字符串表示类是中的一个定义了模型基本功能的类。这种交互式环境称为,常用语测试项目和排除故障。 《Python编程:从入门到实践》笔记。从本篇开始将是该书的最后一个项目,将用3篇文章来介绍Django的基础。完成一个学习笔记的小网站。 1. 前言 在本篇中,我们将: 用...
概述:Django对各种数据库都提供了很好的支持,Django为这些数据库提供了统一的调用接口API,程序员可以根据自己的业务需求选择不同的数据库 ORM简介 概述:对象-关系-映射 作用: 根据类生成表结构;将对象、列表的操作转换成对应的SQL语句;将SQL语句查询到的结果转换为对象或者列表 优点:极大的减轻开发人员的工作量,不需要面对因数据库的变更而导致代码无效在修改代码 图解: showIm...
摘要:那就是新建一个用户,赋予该用户只能操作该数据库的权限。这是根据安全开发中的最小权限原则规定而来的,能够有效的防止网站被攻击后的代价。 基本操作将用一个简单的实例来穿针引线,将尽量涉及到多的操作方法和软件设计的原理 设计表的结构 我们想要做一个班级管理的程序,我们先去设计一下数据库表的结构。首先我们应该有一下几张表 班级表 学生表 班级表 表名:classes 班级id:id 班级...
阅读 3118·2021-11-15 18:14
阅读 1773·2021-09-22 10:51
阅读 3280·2021-09-09 09:34
阅读 3504·2021-09-06 15:02
阅读 1012·2021-09-01 11:40
阅读 3185·2019-08-30 13:58
阅读 2523·2019-08-30 11:04
阅读 1081·2019-08-28 18:31