Django(7)-Get请求和Post请求

Django(1)-简介

Django(2)-创建项目及默认项目目录结构介绍

Django(3)-配置文件详解

Django(4)-URL和视图

Django(5)-路由配置实例

Django(6)-请求及响应

Django(7)-Get请求和Post请求

Django(8)-设计模式

Django(9)-模板层简介与入门实例

Django(10)-模板层的变量和标签

Django(11)-模板层的过滤器和继承

Django(12)-url反向解析

Django(13)-静态文件

Django(14)-应用及分布式路由

Django(15)-模型层及ORM介绍

Django(16)-ORM基础字段及选项

Django(17)-ORM创建数据

Django(18)-ORM常用的查询函数详解及实例演示

Django(19)-ORM条件查询

Django(20)-ORM更新操作及实例演示

Django(21)-ORM删除操作及实例演示

Django(22)-ORM中F对象和Q对象

Django(23)-ORM聚合查询和原生数据库操作

Django(24)-admin后台管理设置步骤以及常见样式详解

Django实战技巧(1)-开发测试生产环境配置切换处理技巧

Django实战技巧(2)-git代码仓分支管理技巧

Django实战技巧(3)-项目配置

1、定义

  • 无论是Get还是Post请求,统一都由视图函数接受,通过判断request.method区分具体的请求动作
  • 式样:
if reqeust.method=="GET":
	处理GET请求的业务逻辑
elif request.mentod=="POST":
	处理Post请求的业务逻辑
else:
	其他请求业务逻辑

2、GET处理

  • GET请求动作,一般用于向服务器获取数据
  • 能够产生GET请求的场景:
    • 浏览器地址输入URL,回车
    • <a href=“地址?参数=值&参数=值”>
    • form 表单中的method为get,一般来说form表单用来发送post请求,如果非要用form发送get也是可以的
    • GET请求方式中,如果有数据需要传递给服务器,通常会用查询字符串传递,注意不要传递敏感数据
    • URL格式:xxx?参数名1=值1&参数名2=值2…
    • 服务端从字符串拿到参数的方式,注意一下,如果参数中同一个参数名时用力多次,并且在处理请求的时候多个值都需要,此时需要使用getlist来获取所有的,这种场景通常用在多选框的时候
request.GET[“参数名”]
request.GET.get("参数名","默认值")
request.GET.getlist("参数名”)

GET请求获取参数实例:
路由设置如下:
在这里插入图片描述
视图函数实现如下:

from django.http import HttpResponse,HttpResponseBadRequest


def test_get_post(request):
    if request.method=="GET":
        print("a:",request.GET["a"])
        print("b:",request.GET.get("b"))
        print("c:",request.GET.get("c","ccc"))
        print("b:",request.GET.getlist("b"))
    elif request.method=="POST":
        pass
    else:
        pass
    return HttpResponse("-- test get post is ok --")

在浏览器打开:http://127.0.0.1:8080/test_get_post?a=200&b=100&c=300&b=400
在pycharm后台可以看到如下打印:这里验证了如果同一个参数名在参数中出现多次,当使用get方法获取时只能获取到最后一个值,使用getlist方法是可以将所以值获取到从而可以再做进一步的处理
在这里插入图片描述

3、POST处理

  • Post请求动作,一般用于向服务器提交大量、隐私数据
  • 客户端通过表单等POST请求将数据传递给服务器,如:
<form method='post' action='/login">
	姓名:<input type='text' name='username'>
	<input type='submit' value='登录'>
</form>
  • 服务器端接受数据
    • 通过request.method来判断是否为post请求,如:
if request.method == "POST":
	处理POSt请求的数据并响应
else:
	处理非POSt请求的响应
  • 使用post方式获取参数的方式与get的方式基本一致,只不过从POST属性中获取
request.POST[“参数名”]
request.POST.get("参数名","默认值")
request.POST.getlist("参数名”)

实例演示POST处理:
首先路由设计如下:
在这里插入图片描述
视图函数实现如下,其中get请求为返回一个简单的html网页,此网页提供一个输入框和一个提交按钮,用来发送post请求,post处理在后台打印username的变量值

from django.http import HttpResponse,HttpResponseBadRequest


def test_get_post(request):
    if request.method=="GET":
        html="""
        <form method='post' action='/test_get_post'>
            用户名:<input type='text' name='username'>
            <input type='submit' value='提交'>
        </form>
        """
        return HttpResponse(html)
    elif request.method=="POST":
        print("username:",request.POST["username"])
        print("username:",request.POST.get("username"))
        return HttpResponse("post is ok")
    else:
        pass
    return HttpResponse("-- test get post is ok --")

然后在浏览器打开http://127.0.0.1:8080/test_get_post页面,输入用户名,比如redrose2100,然后点提交按钮
在这里插入图片描述
如果没有修改过配置文件,则应该会出现如下界面,这是Django做的一种安全防护(CSRF攻击)
在这里插入图片描述
这里暂时先把csrf防护关闭掉,如下将此行配置代码注释掉即可
在这里插入图片描述
然后在浏览器重新刷页面,重新输入用户名,点击提交按钮
在这里插入图片描述
此时页面已经OK,如下,后台也能正常打印出我们从表单中获取到的变量的值
在这里插入图片描述

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

redrose2100

您的鼓励是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值