视图函数 a.视图函数的第一参数是HttpRequest对象 b.HttpRequest对象包含了请求的所有数据(请求头、请求体) c.视图函数必须得返回一个HttpResponse对象或者其子类对象 :param request: :return:
def projects(request):
"""
视图函数
a.视图函数的第一参数是HttpRequest对象
b.HttpRequest对象包含了请求的所有数据(请求头、请求体)
c.视图函数必须得返回一个HttpResponse对象或者其子类对象
:param request:
:return:
"""
# print(request)
# print(type(request))
# print(type(request).__mro__)
if request.method == 'GET':
#
#
#
return HttpResponse("<h1>获取项目信息</h1>")
elif request.method == 'POST':
return HttpResponse("<h1>创建项目信息</h1>")
elif request.method == 'PUT':
return HttpResponse("<h1>更新项目信息</h1>")
elif request.method == 'DELETE':
return HttpResponse("<h1>删除项目信息</h1>")
else:
return HttpResponse("<h1>其他操作</h1>")
定义类视图 1.继承View或者View子类 2.不通的请求方法有相应的方法进行对应 ??? GET?? ->?? get ??? POST? ->?? post ??? PUT?? ->?? put ??? DELETE ->? delete ??? PATCH? -> patch 3.每一个处理请求的方法,必须得返回HttpResponse对象或者HttpResponse子类对象 4.每一个处理请求的方法,第二个参数必须为HttpRequest对象 5.HttpResponse ? a.第一个参数为字符串类型(需要返回到前端的字符串数据) ? b.content_type可以指定响应头中的Content-Type参数 ? c.status可以指定响应状态码 json_str = json.dumps(project_data, ensure_ascii=False) return HttpResponse(f"<h1>获取项目{pk}信息</h1>") return HttpResponse(json_str, content_type='application/json', status=201) 6.JsonResponse ? a.为HttpResponse子类 ? b.用于返回json数据 ? c.第一个参数可以直接传递字典或者嵌套字典的列表 ? d.默认添加content_type为application/json ? e.默认第一个参数只能为字典,如果为嵌套字典的列表,需要设置safe=False return JsonResponse(project_data, json_dumps_params={'ensure_ascii': False}, status=201) 7.两种开发模式 1.前后端不分离的开发模式 ? a.后端如果返回的是一个完整的html页面(页面中有填充数据) 2.前后端分离的开发模式 ? a.后端如果返回的是数据(json、xml)
class ProjectsView(View):
def get(self, request, pk):
project_data = {
'id': 1,
'name': 'xxxx项目',
'leader': '潘潘达'
}
project_data_list = [
{
'id': 1,
'name': 'xxxx项目',
'leader': '潘潘达'
},
{
'id': 2,
'name': 'yyyy项目',
'leader': '多喝热水'
},
{
'id': 3,
'name': 'zzzz项目',
'leader': '不语'
}
]
|