Django(五、视图层)

本文详细介绍了Django中视图函数的返回值要求,包括为何需要返回HttpResponse,以及如何使用JsonResponse进行前后端数据序列化。还涵盖了form表单上传文件的方法和FBV(基于函数的视图)与CBV(基于类的视图)的区别与实现。

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

一、视图层

1.视图函数返回值的问题

当视图函数返回为一个空的时候会报错

def index(request):
    # return HttpResponse('is index!')
    return None

在这里插入图片描述
把上面一句话翻译过来就是视图函数必须返回一个HttpResponse对象

2.三板斧的使用

HttpResponse: 字符串
render:渲染html页面
redirect:重定向的

1.HttpResponse
    class HttpResponse(HttpResponseBase)pass
     # 括号内直接跟一个具体的字符串作为响应体

2.render
def render(request, template_name, context=None, content_type=None, status=None, using=None):

    request: 用于生成响应的请求对象。
	template_name:要使用的模板的完整名称,可选的参数
	context:添加到模板上下文的一个字典。默认是一个空字典。如果字典中的某个值是可调用的,视图将在渲染模板之前调用它。
	render方法就是将一个模板页面中的模板语法进行渲染,最终渲染成一个html页面作为响应体。
	
    content = loader.render_to_string(template_name, context, request, using=using)
    return HttpResponse(content, content_type, status)

3.redirect
def redirect(to, *args, permanent=False, **kwargs):
  	传递要重定向的一个硬编码的URL或者路由
    redirect_class = HttpResponsePermanentRedirect if permanent else HttpResponseRedirect
    return redirect_class(resolve_url(to, *args, **kwargs))
    eg: redirect内部是继承了HttpRespone类
结论:在视图文件中写视图函数的时候不能没有返回值,默认返回的是None,但是页面上会报错,用来处理请求的视图函数都必须返回httpResponse对象。

二、JsonReponse序列化类的使用

前后端数据交互需要使用json作为序列化,实现跨语言数据传输。

  1. 混合开发项目:前端页面和后端代码写到一块
  2. 前后端分离项目:前端是一个项目,后端是一个项目,后端只需要写接口

前端序列化:JSON.stringify(),JSON.parse()
后端序列化:json.dumps(), json.loads()

1.json序列化

# 导入模块
import json

<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值