Django框架入门之request对象

【一】request对象属性和方法

【1】request.method

  • 获取发起请求的请求方式
  • get请求携带的数据是由大小限制的
  • post请求携带的请求参数没有限制

【2】request.POST

  • 获取用户输入的请求数据,但不包含文件
  • 返回的是:大写字符串

【3】get/getlist

  • get 只会获取列表最后一个元素
  • getlist 直接将列表取出(多选项)

【二】注册案例

【1】提交GET请求

(1)前端

  • form表单中action属性,不写默认是当前路由地址
  • form表单中的method属性,不写默认是GET请求

(2)后端

  • app01/views.py
from django.shortcuts import render

def register(request):

    return render(request, 'register.html')
  • urls
from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path("register/", views.register)
]

【2】提交POST请求

(1)前端

{% load static  %}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册页面</title>
    <script src="{% static 'js/bootstrap.min.js' %}"></script>
    <script src="{% static 'js/jquery.min.js' %}"></script>
    <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
</head>
<body>
<div class="container-fluid">
    <div class="row">
        <div class="col-md-4 col-md-offset-4">
            <h1 class="text-center">注册页面</h1>
            <form action="" method="get">
                <div>username:<input type="text" class="form-control" name="username"></div>
                <div>password:<input type="text" class="form-control" name="password"></div>
                <div>hobby:
                <input type="checkbox" name="hobby" value="music">音乐<span></span>
                <input type="checkbox" name="hobby" value="art">美术<span></span>
                <input type="checkbox" name="hobby" value="sing">唱歌</div>

            <div><input type="submit" class="btn btn-success" id="btn_submit"></div>
            </form>
        </div>
    </div>
</div>

</body>

</html>

(2)后端两种方式

  • get请求和post请求
from django.shortcuts import render,HttpResponse,redirect

def register(request):
    print(request.method)
    if request.method == 'GET':
        data=request.GET
        print(data) #<QueryDict: {'username': ['hope'], 'password': ['123'], 'hobby': ['music', 'art']}>
        username=data.get('username')
        password=data.get('password')
        hobby=data.getlist('hobby')
        print(username)
        print(password)
        print(hobby)
    elif request.method == 'GET':
        data = request.POST
        print(data)  # <QueryDict: {'username': ['hope'], 'password': ['123'], 'hobby': ['music', 'art']}>
        username = data.get('username')
        password = data.get('password')
        hobby = data.getlist('hobby')
        print(username)
        print(password)
        print(hobby)

    return render(request,'index.html')
#GET
#<QueryDict: {'username': ['hope'], 'password': ['123'], 'hobby': ['music', #'art', 'sing']}>
#hope
#123
#['music', 'art', 'sing']

image-20240227182332452

(3)POST请求报错解决办法

  • 当前端form表单发送POST请求时,会报一个错,导致后端崩溃

  • 将settings.py文件中的配置注释掉,在后面的学习中我们会逐步的解决掉这个问题

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 将这个配置先注释掉
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
posted @ 2024-03-13 09:05  -半城烟雨  阅读(36)  评论(0)    收藏  举报