首页 > 其他分享 >Django之form表单相关操作

Django之form表单相关操作

时间:2023-02-21 17:34:15浏览次数:42  
标签:name form get GET request 表单 POST Django method

目录

摘要

本章讲述了form表单的action参数,以及前后端简单传递数据的方式:form表单中的method参数,input标签中的name参数,GET/POST请求,以及后端接收数据的方式:request.method方法

form表单

form表单的action参数

# 控制数据提交的地址
'''
	1. action='',默认向当前地址发送数据
	2. action='https://www.baidu.com/'   完整地址,向所写地址发送数据
	3. action='/index/'   路由地址,向当前服务端的index地址提交数据
		127.0.0.1/index/
'''

form表单的method参数

# 控制数据提交的方法
'''
	get	默认,向别人请求数据(可以携带一些要求,如一些筛选条件)
			携带数据方式:
				URL?aaa=bbb&xxx=ccc  使用?符号携带,使用&符号隔开多个条件
			限制:
			    1. 携带的数据的大小有限制,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。
				    对于服务器:
					Apache (Server):最大url长度为8,192个字符。
					Microsoft Internet Information Server(IIS):最大url的长度为16,384个字符。
				    对于浏览器:
					Microsoft Internet Explorer (Browser):URL的最大限制为2,083个字符,超过限制提交按钮将失效。
					Firefox (Browser):URL的长度限制为65,536个字符
					Safari (Browser):URL最大长度限制为 80,000个字符。
					Opera (Browser):URL最大长度限制为190,000个字符。
					Google (chrome):URL最大长度限制为8,182个字符。
			    2. 携带的数据因为是明文,所以不能有敏感数据
				
	post	向别人提交数据
			携带数据的方式: 请求体
				请求体携带的数据安全性较高,并且大小没有限制
'''

request.method方法

简介

request.method			   获取请求方式,结果是纯大写的字符串数据
	GET\POST
request.POST			   获取请求体中携带的数据
	request.POST.get()	   获取列表最后一个数据值
	request.POST.getlist()	   获取整个列表数据,以列表形式返回
request.GET				   获取请求中url中问号后面携带的数据,无论GET\POST都会传递数据
	request.GET.get()	   获取列表最后一个数据值
	request.GET.getlist()	   获取整个列表数据,以列表形式返回

get请求传递数据

# input标签添加name属性值
    <div class="container">
        <div class="row">
            <h1 class="text-center">用户登录</h1>
            <div class="col-md-6 col-md-offset-3">
                <form action="">
                    <p>username:
                        <input type="text" class="form-control" name="name">
                    </p>
                    <p>password:
                        <input type="password" class="form-control" name="pwd">
                    </p>
                    <input type="submit" class="btn btn-block btn-success">
                </form>
            </div>
        </div>
    </div>

# 在浏览器username处填写Tom,在password处填写123
# 此时提交表单后,浏览器的url会变为:http://127.0.0.1:8000/login/?name=Tom&pwd=123

post请求传递数据

    <div class="container">
        <div class="row">
            <h1 class="text-center">用户登录</h1>
            <div class="col-md-6 col-md-offset-3">
                <form action="" method="post">  # 修改method传递方式
                    {% csrf_token %}
                    <p>username:
                        <input type="text" class="form-control" name="name">
                    </p>
                    <p>password:
                        <input type="password" class="form-control" name="pwd">
                    </p>
                    <input type="submit" class="btn btn-block btn-success">
                </form>
            </div>
        </div>
    </div>

现在的问题是,后端如何知道用户发送的是get请求还是post请求?方法如下:

def login_func(request):
    # 如果问号后面携带数据,可使用request.GET获取,例如url为:http://127.0.0.1:8000/login/?name=jack
    print(request.GET)  # 返回: <QueryDict: {'name': ['jack']}>
    if request.method == 'GET':
        return render(request, 'login.html')
    elif request.method == 'POST':
        print(request.POST)  # 返回 <QueryDict: {'name': ['jack'], 'pwd': ['123']}>
        name = request.POST.get('name')  # 返回jack
        pwd = request.POST.get('pwd')   # 返回123
        print(name, pwd)
        print(request.POST.getlist('name'))  # 返回['Jack', 'Rose', 'Maria']
        return HttpResponse('The post get the data')
# 如果要返回多个数据,需要一次性接收(checkbox这种),可以使用下面的方法:
print(request.POST.getlist('name'))  # 返回['Jack', 'Rose', 'Maria']

GET/POST实际应用,简单登录方式实现

# 前端页面使用上面的html代码,在此不再重复
# 后端代码如下
def login_func(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        pwd = request.POST.get('pwd')
        # 注意,此种方法收到的前端数据都是字符串
        if name == 'jack' and pwd == '123':
            return HttpResponse('用户登录成功')
        return HttpResponse('用户名或密码错误')
    return render(request, 'login.html')

标签:name,form,get,GET,request,表单,POST,Django,method
From: https://www.cnblogs.com/smyz/p/17141785.html

相关文章

  • 闲逛Django Framework
    昨天看了一通R语言后,找不到合适的需要用R语言。先暂时放到一边,等有需求了再继续试用。今天闲逛到Python的Web开发框架DjangoFramework.写了一个最基本的HellowordWe......
  • Django
    Django的组件1、ORM对象关系映射(ObjectRelationalMapping,简称ORM),用于实现面向对象编程语言里不同类型系统的数据之间的转换。ORM在业务逻辑层和数据库层之间充当了......
  • Winform只运行一个实例
    创建帮助类单例帮助类 publicclassMainHelper{publicstaticProcessRunningInstance(stringlocation){varcurrent=Proce......
  • 开心档之Bootstrap4 自定义表单
    Bootstrap4自定义表单Bootstrap4可以自定义一些表单的样式来替换浏览器默认的样式。 自定义复选框如果要自定义一个复选框,可以设置<div>为父元素,类为.custom-c......
  • 初识django
    目录Django简介Django版本Django基本使用Django下载安装Django基本操作命令行创建并启动Django项目PyCharm创建并启动Django项目在Django中创建appDjango主要目录结构Djang......
  • Vue前端框架Element 的form表单项el-form-item的label中空格不起效和多个空格只显示一
    搜索了一下,大部分是说使用slot解决,但是使用&nbsp;&nbsp;只显示一个后又看到一篇文章Vue使用&nbsp空白占位符-钟小嘿-博客园(cnblogs.com)使用转义,但要用v-html,......
  • Django丨聚合与分组查询
    聚合查询聚合查询函数时对一组值执行计算,并返回单个值Django使用聚合查询前要先从django.db.models引用Avg、Max、Min、Count、Sum(首字母大写)fromdjango.db.modelsim......
  • WebDark technical support information :
    WebDarkisSafariextensionthatmakesyourbrowsermorecomfortableforreading.InstallWebDarkSafariextensionfollowingthesteps:1.OpenSafaripreferen......
  • 用jquery.form.js 实现ajax提交含有上传文件和普通字段的表单
    前两天用到ajax提交含上传图片的表单。实现的功能比较简单,但是使用ajax提交表单form.serialize只能实现普通的字段提交,上传图片却不能使用。网上很多都是推荐使用jquer......
  • django的部署在centos
    虚拟环境#virtualenv是一个创建独立python环境的工具sudopipinstallvirtualenv#virtualenvwrapper将所有的虚拟环境统一管理,留意安装路径后面要用sudopipinstall......