所谓 HttpRequest 响应就是服务器返回给客户端的数据,HttpRequest 由程序员自己创建,一般他们通过两种方式来创建。
不使用模板,直接调用 HttpResponse(),返回 HttpResponse 对象;
通过 render() 函数调用模板(templates)进行渲染
# render() 函数语法
render(request, template_name, [context])
# 函数参数说明
# request:上面刚提到,即客户端的请求信息
# template_name:模板名,如index.html
# context:这是一个可选的字典类型参数,该参数用于传入模板中,从而更好地渲染模板
还有就是 HttpResponse 的一些子类也可实现响应。
HttpResponseRedirect
# 可实现服务器内部跳转(但还是推荐使用反向解析)
return HttpResponseRedirect('/grade/2030')
扩展:也可使用 redirect() 进行重定向,也就是说它与 HttpResponseRedirect 是等价的。
JsonResponse
# 返回Json数据的请求,通常用在异步请求上
JsonResponse(dict) # 将字典转为Json格式
1、视图函数
def my_response(request):
# 1.返回字符串:企业项目中很少使用
# return HttpResponse('ok')
# 2.返回模板(用于前后端不分离的情况,即前后端代码放在一个工程下面,后端返回数据后,直接将数据渲染模板)
# return render(request, 'index.html')
# 3.重定向(一般用于页面跳转)
# return redirect('/request/')
# return HttpResponseRedirect('/request/')
# 4.返回Json数据*(用于前后端不分离的情况,即后端只需返回数据给前端,前端拿到数据后自己去渲染)
return JsonResponse({'data': 'hello'})
2、路由
from django.urls import path
from user.views import index, my_request, my_response
urlpatterns = [
path('user/', index, name='index'),
path('request/', my_request, name='my_request'),
path('response/', my_response, name='my_response'),
]
3、请求
一般很少用,常见属性和方法有一下几种:
1、属性
2、方法
>>> 疑问?来自 GPT 的回答
# 1.视图函数(views.py)
from django.shortcuts import render
def index(request):
# 渲染模板render,渲染HTML
return render(request, 'index.html')
# 2.模板文件(templates/index.html)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>首页</h2>
<hr>
<h4>Hello Django!</h4>
</body>
</html>
# 3.路由(urls.py)
from django.contrib import admin
from django.urls import path
from user.views import *
urlpatterns = [
path('index/', index),
path('admin/', admin.site.urls),
]
因此,想这个案例流程就是:当客户端向我的 Django 项目 Web 服务发起 HTTP 请求时,Django 将获取客户端的请求信息,如请求方法GET、POST 及 URL 信息等(由 request 获取)。
path('index/', index)
index.html
,即上面视图函数中 return render(request, 'index.html')
—END