Skip to content

Django请求响应

更新: 2025/2/24 字数: 0 字 时长: 0 分钟

请求

在前面例子当中可以看到每一个视图函数都带了一个默认的 request 参数,其实它是一个对象,里面封装了用户发送过来的所有请求相关数据。

请求类型

**在视图函数中,我们可以通过 request.method 方法来区分用户发送的请求类型。**例如,在 view.py 视图函数文件中新增如下代码:

python
def something(request):
    # 获取请求类型
    if request.method == 'GET':
        return HttpResponse('用户发送的GET请求')
    else:
        return HttpResponse('用户发送的POST请求')

QQ截图20220513011217

再将新的视图函数注册到 urls.py 文件中:

python
path('something/', app01.views.something)

QQ截图20220513011329

访问该地址 http://127.0.0.1:8000/something/ 可见通过浏览器回车发送的请求是一个GET请求:

QQ截图20220513011512

URL参数

使用网址来访问网站的人都知道URL是可以带参数的,例如 http://127.0.0.1:8000/something/?n1=123&n2=999,我们可以修改上面的代码来获取URL中的参数:

python
def something(request):
    # 获取请求类型
    if request.method == 'GET':
        # 获取URL中的参数
        print(request.GET)
        # 获取n1参数、n2参数
        print({'n1': request.GET.get('n1'), 'n2': request.GET.get('n2')})
        return HttpResponse('用户发送的GET请求')
    else:
        return HttpResponse('用户发送的POST请求')

现在我们访问上面的地址,控制台就会输出如下结果:

QQ截图20220513012631

POST表单

**熟悉爬虫的同学都知道,POST请求和GET请求最大区别就是,POST请求的参数是通过一个表单进行发送,而GET请求是通过URL参数进行发送。在这里,我们可以通过 request.POST 方法来获取POST请求传递的表单数据。**修改上面的代码如下:

QQ截图20220513013542

响应

在前面的请求当中,已经学习了Django的两种响应,我们回顾学习。

返回字符串

方法 HttpResponse 在前面的例子讲解中提到过,其作用就是将字符串内容返回给请求者:

python
def test(request):
    # HttpResponse方法,响应后返回字符串内容
    return HttpResponse('用户发起请求')

返回HTML

方法 render 在前面的例子讲解中提到过,其作用就是将渲染后的HTML页面内容返回给请求者:

python
def test(request):
    # render方法,第一个参数默认为request;第二个参数是模板文件;第三个参数类型必须是dict字典,将变量数据传递给模板文件渲染
    return render(request, "test.html", data)

重定向

方法 redirect 就是将访问这个视图函数的请求者重定向到新的URL上:

python
from django.shortcuts import redirect

def test(request):
    return redirect('https://www.baidu.com')