Django之POST和GET请求

  • HttpRequest对象
    服务器接收到http请求后,会创建一个HttpRequest对象,模块Django.http中定义HttpRequest对象API。

  • 属性

# get_post app下面的视图文件views.y
def index(request):
    print(request)
    print(request.path) # 请求的页面路径
    print(request.method) # 请求的方式
    print(request.encoding) # 请求的编码方式
    print(request.get_host())  # IP和端口
    print(request.get_port())  # 端口
    return render(request,'get_post/index.html')

# 输出结果

<WSGIRequest: GET '/get_post/index/'> # request对象
/get_post/index/  # 请求的路径
GET   # 请求的方式
None   # 编码的默认格式 utf_8
127.0.0.1:8001    # IP和端口
8001        # 端口
# get_post app下面的视图文件views.y
from django.urls import path
from . import views
urlpatterns = [
    path('index/',views.index)
]

模板文件


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>请求与相应</title>
</head>
<body>
<form action="" method="get">
    {
    
    % csrf_token %}
    用户名<input type="text" name="user" placeholder="请输入用户名"> <br>&emsp;<input type="password" name="pwd" placeholder="输入密码"> <br>
    <button type="submit">提交</button>
</form>
</body>
</html>
  • GET请求
# 视图文件下的视图函数
def get_test(request):
    print(request.method)
    user = request.GET.get('user')
    pwd = request.GET.get('pwd')
    print(user,pwd)
    return HttpResponse('提交成功')



# 运行结果
GET   #请求方式
123 123  # 一个是账户一个是密码

模板文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>请求与相应</title>
</head>
<body>
<form action="{% url 'get_test' %}" method="get">
    {
    
    % csrf_token %}
    用户名<input type="text" name="user" placeholder="请输入用户名"> <br>&emsp;<input type="password" name="pwd" placeholder="输入密码"> <br>
    <button type="submit">提交</button>
</form>
</body>
</html>

模板文件运行结果
模板文件运行结果

  • 地址栏

http://127.0.0.1:8001/get_post/get_test/?csrfmiddlewaretoken=wV77ER851isy3WT01AVHw9VefC87fMArbCYJVzgF7JF8Ra2KZZeLNNrkB4wGnMk1&user=123&pwd=123

可以看出参数和传输的敏感信息都可以看到显然当我们传输密码之类的信息显然不行则则需要post请求

  • post请求
# 视图文件下的视图函数
def post_test(request):
    print(request.method)
    user = request.POST.get('user')
    pwd = request.POST.get('pwd')
    print(user, pwd)
    return HttpResponse('提交成功')


# 运行结果
POST  # 请求方式
123 123  # user和pwd的值

模板文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>请求与相应</title>
</head>
<body>
<form action="{% url 'post_test' %}" method="post">
    {
    
    % csrf_token %}
    用户名<input type="text" name="user" placeholder="请输入用户名"> <br>&emsp;<input type="password" name="pwd" placeholder="输入密码"> <br>
    <button type="submit">提交</button>
</form>
</body>
</html>
  • post地址栏
    http://127.0.0.1:8001/get_post/post_test/

则可以看出避免了敏感信息的显示
post不会再地址栏中展示参数如果用传输敏感信息则使用post方式最好

猜你喜欢

转载自blog.csdn.net/qq_53075298/article/details/120378779