django学习——request.POST.get(‘key’) 、 request.GET.get('key', '')

request.POST是用来接受从前端表单中传过来的数据,比如用户登录过程中传递过来的username、passwrod等字段。返回类型是字典;

在后台进行数据获取时,有两种方法(以username为例):request.POST[‘username’]与request.POST.get(‘username’),那么这两者有什么不同之处呢?

如果传递过来的数值不为空,那么这两种方法都没有错误,可以得到相同的结果。但是如果传递过来的数值为空,那么request.POST[‘username’]则会提示Keyerror错误,而request.POST.get(‘username’)则不会报错,而是返回一个None。举例来说:

try:
x = request.POST[‘sth‘]
except KeyError:
x = None
1
2
3
4
x = request.POST.get(‘sth‘)
1
以上两种写法是等价的。

如果数值不存在的话,我们可以指定显示的默认值:

x = request.POST.get(‘sth‘, ‘default_value‘)
1
这里我们可以拿字典对象来进行理解:

list_test = {‘a‘: 1, ‘b‘: 2}

list_test.get(‘a‘) # 得到结果1
list_test.get(‘c‘) # 得到结果none
list_test.get(‘c‘, 3) # 得到设定的默认值3
list_test[‘b‘] # 得到结果 2
list_test[‘c‘] # 返回一个Keyvalue 错误类型

-------------------------------

GET一样:

query = request.GET.get(‘q‘, ‘‘)

寻找名为 q 的GET参数,而且如果参数没有提交,返回一个空的字符串。

注意在 request.GET 中使用了 get() 方法,这可能让大家不好理解。这里的 get() 是每个python的的字典数据类型都有的方法。使用的时候要小心:假设 request.GET 包含一个 ‘q‘ 的key是不安全的,所以我们使用 get(‘q‘, ‘‘) 提供一个缺省的返回值‘‘ (一个空字符串)。如果只是使用 request.GET[‘q‘] 访问变量,在Get数据时 q 不可得,可能引发 KeyError .

django学习——request.POST.get(‘key’) 、 request.GET.get('key', '')

原文地址:https://www.cnblogs.com/feiyueNotes/p/11107315.html

时间: 2024-10-05 00:07:08

django学习——request.POST.get(‘key’) 、 request.GET.get('key', '')的相关文章

Django Rest framework基础使用之Request/Response

1.Request restframework提供了一个Request对象(rest_framework.request.Request) Request对象继承了Django默认的HttpRequest对象,它最核心的功能就是请求数据都包含在request.data属性中,类似于Django的request.POST,但是request.data应用范围更广: 1)request.data:返回解析之后的请求体数据,类似于Django中标准的request.POST和request.FILES

基于 django RestFramework ,加工或者修改 request.POST 的数据内容

背景: 经常,我们希望在 django的viewset视图函数 中对request中的数据进行一定的添加或修改,然后才将数据传到 serializer中去. 例如,根据前端的token 提取出某用户的个人信息,再将个人信息和表单数据一起提交到serializer,serializer.save() 保存到数据库中,记录下添加该条数据 的用户. 问题点: 但是django 机制中的 request 是不允许被修改的 解决方案: 1.data = request.POST.copy() 复制requ

JSP学习笔记 - 内置对象 Request

1.主要掌握以下5个内置对象及其所属类,必须学会在java docs里根据类名查找相应的方法 request     javax.servlet.http.HttpServletRequest response  javax.servlet.http.HttpServletResponse session    javax.servlet.http.HttpSession pageContext  javax.servlet.jsp.PageContext application   javax

Django学习笔记(二)—— 模板

疯狂的暑假学习之 Django学习笔记(二)-- 模板 参考: <The Django Book> 第四章 一.模板基础知识 1.模板是如何工作的 用 python manage.py shell 启动交互界面(因为manage.py 保存了Django的配置,如果直接python启动交互界面运行下面代码会出错) 输入下面代码 >>> from django import template >>> t = template.Template('My name

Python框架之Django学习笔记(十五)

表单 从Google的简朴的单个搜索框,到常见的Blog评论提交表单,再到复杂的自定义数据输入接口,HTML表单一直是交互性网站的支柱.本次内容将介绍如何用Django对用户通过表单提交的数据进行访问.有效性检查以及其它处理. 与此同时,我们将介绍HttpRequest对象和Form对象. 从Request对象中获取数据 在前面讲述View的函数时已经介绍过HttpRequest对象了,但当时并没有讲太多. 让我们回忆下:每个view函数的第一个参数是一个HttpRequest对象,就像下面这个

[Django学习] Django基础(9)_阅读计数

一. 简单计数法 (一) 实施方法 1. 在现有的models模型中添加readed_num字段用于记录阅读数据. class Blog(models.Model): title = models.CharField(max_length=50) blog_type = models.ForeignKey(BlogType, on_delete=models.DO_NOTHING) content = RichTextUploadingField() author = models.Foreig

django 学习之DRF (二)

Django学习之DRF02 Serializer序列化器之反序列化操作    1.调?序列化器进?验证        0.准备序列化器            class BookInfoSerializer(serializers.Serializer):            """图书数据序列化器"""                id = serializers.IntegerField(label= 'ID', read_only=

Django学习总结(Week01-结)

关于request.Files.get('head')取不到值的问题,需要在前端把表单的enctype设置为multipart/form-data 这样用户头像的修改和学生头像上传问题一起解决了. <form action="{% url 'app:students' %}" method="post" enctype="multipart/form-data"> 值得一提的是在保存图片时,models中的 s_head = mode

Django学习之 - 基础模板语言

模板语言循环 1:如果模板语言遇到列表,直接进行循环取值即可. 2:如果模板语言遇到字典进行循环有以下3种: - for item in dict.keys 只循环获取字典key - for item in dict.value 只循环获取字典value - for k,v in dict.items 循环获取字典的key,value全部.实例url:fordict # 字典for循环的取值方法 1 userlist = { 2 '1': {'name': 'jack', 'age': 36},