Django-5.请求与访问

本文详细介绍了Django中HttpRequest对象的使用,包括GET和POST请求的区别,类视图的概念,文件上传的实现以及如何利用HttpResponse对象进行响应。同时,还探讨了登录状态保持中的cookie操作。通过实例展示了form表单的GET和POST提交,以及GET和POST的对比,重点讲解了在Django中处理文件上传的步骤和配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、HttpRequest对象

HttpRequest对象:

服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的第一个参数是HttpRequest对象在django.http模块中定义了HttpRequest对象的API
在这里插入图片描述

get_post\views.py

from django.shortcuts import render
from django.http import HttpResponse


def index(request):
    print(request)                  #<WSGIRequest: GET '/get_post/index/'>
    print(request.path)             #/get_post/index/
    print(request.method)           #GET
    print(request.encoding)         #None
    return HttpResponse('访问成功')

在这里插入图片描述

二、GET和POST请求

1.form标签中的GET和POST

在HTML中,form表单的作用是收集标签中的内容,… 中间可以由访问者添加类似于文本,选择,或者一些控制模块等等.然后这些内容将会被送到服务端。

一个表单必须指定两样东西:

  1. form的method参数用于设置表单的提交方式,默认使用POST.
  2. action用于设置表单的提交url,如果不写或者保持空字符串,那么将使用当前的URL.
    在这里插入图片描述
form表单使用get方式提交的例子

get_post.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form method="get" action="{% url 'get_test' %}">{% csrf_token %}
用户名:    <input type="text" placeholder="请输入用户名" name="user"><br>&emsp;码:<input type="text" placeholder="请输入密码" name="pwd"><br>

<input type="submit" value="提交">
</form>
</body>
</html>

ger_post\views.py

from django.shortcuts import render
from django.http import HttpResponse


def index(request):
    print(request)                  #<WSGIRequest: GET '/get_post/index/'>
    print(request.path)             #/get_post/index/
    print(request.method)           #GET
    print(request.encoding)         #None
    return render(request, 'get_post/get_post.html')


def get_test(request):
    print(request.method)
    username = request.GET.get('user')
    password = request.GET.get('pwd')
    print(username)
    print(password)
    return HttpResponse('操作完毕')

在这里插入图片描述

form表单使用post方式提交的例子

get_post.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form method="post" action="{% url 'post_test' %}">{% csrf_token %}
用户名:    <input type="text" placeholder="请输入用户名" name="user"><br>&emsp;码:<input type="text" placeholder="请输入密码" name="pwd"><br>

<input type="submit" value="提交">
</form>
</body>
</html>

ger_post\views.py

from django.shortcuts import render
from django.http import HttpResponse


def index(request):
    print(request)                  #<WSGIRequest: GET '/get_post/index/'>
    print(request.path)             #/get_post/index/
    print(request.method)           #GET
    print(request.encoding)         #None
    return render(request, 'get_post/get_post.html')


def post_test(request):
    print(request.method)
    username = request.POST.get('user')
    password = request.POST.get('pwd')
    print(username)
    print(password)
    return HttpResponse('操作完毕')

在这里插入图片描述

一键多值的getlist方法

在这里插入图片描述

2.GET和POST对比

在这里插入图片描述
在这里插入图片描述

三、类视图

View类视图以请求方式为类方法.
在对应的方式下面编写对应的逻辑函数.
在这里插入图片描述在这里插入图片描述

四、文件上传

Django在处理文件上传的时候,文件数据被保存在了request.FILES
FILES中的每个键为中的name

设置文件的存储路径

1.在项目根目录下static中创建media文件夹
2.图片上传后,会被保存到“/static/media/文件”
3.打开settings.py文件,增加media_root项
在这里插入图片描述

文件上传form表单中

FILES只有在请求的方法为POST 且提交的带有enctype="multipart/form-data"的情况下才会包含数据。否则,FILES 将为一个空的类似于字典的对象
在这里插入图片描述

文件上传视图函数

在这里插入图片描述

五、HttpResponse对象

提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
在这里插入图片描述

六、登录状态保持

服务器中设置cookie及获取cookie

注意:设置cookie值以及删除cookie值都是response对象的操作,而获取cookie是从requeset相应中获得的.
get_post\views.py

import datetime
def set_ck(request):
    response =  HttpResponse('设置cookie')
    #response.set_cookie('name', 'moran')  # 默认关闭过期时间
    #response.set_cookie('name', 'moran', max_age=20)  # 设置20秒过期
    response.set_cookie('name', 'moran', expires=datetime.datetime(2021, 9, 2))  # 设置20秒过期

    return response


def get_ck(request):
    cookie = request.COOKIES
    ck = cookie.get('name')
    return HttpResponse('欢迎{}进入'.format(ck))


def del_ck(request):
    response = HttpResponse('删除cookie')
    response.delete_cookie('name')
    return response
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值