2.但是当我们传入中文之后,发现中文依旧会乱码。
"""
在json.dump()中有一个参数是ensure_ascii=Flase,这个参数可以控制中文是否编码。我们查看JsonResponse的源码:
def __init__(self, data, encoder=DjangoJSONEncoder, safe=True,
json_dumps_params=None, **kwargs):
if safe and not isinstance(data, dict):
raise TypeError(
'In order to allow non-dict objects to be serialized set the '
'safe parameter to False.'
)
if json_dumps_params is None:
json_dumps_params = {}
kwargs.setdefault('content_type', 'application/json')
data = json.dumps(data, cls=encoder, **json_dumps_params)
super().__init__(content=data, **kwargs)
我们发现json.dumps(data, cls=encoder, **json_dumps_params)中有一个参数json_dumps_params是字典类型,并且前面带**说明可以将字典打散成关键字参数。所以我们直接给json_dumps_params字典指定一个值{'ensure_ascii':False},**会将字典打散成关键字参数传入。return JsonResponse(userdict,json_dumps_params={'ensure_ascii':False})
"""
3.当我们想要将其他数据类型序列化转世在页面上,依然可以通过看源码的方式得到:需要加一个参数safe=False。
"""
源码:
def __init__(self, data, encoder=DjangoJSONEncoder, safe=True,
json_dumps_params=None, **kwargs):
if safe and not isinstance(data, dict):
raise TypeError(
'In order to allow non-dict objects to be serialized set the'safe parameter to False.'
)
"""deflogin(request):
userlist = [1, 'jason', 2, 'max', (1,2,3)]
return JsonResponse(userlist,safe=False)
我们可以通过文件读写的方式,让获取到的文件保存到指定位置:
views:
definfo(request):
if request.method == 'POST':
print(request.POST)
print(request.FILES)
file_obj = request.FILES.get('file')
print(file_obj.name)
withopen(r'%s'%file_obj.name, 'wb') as f:
for line in file_obj:
f.write(line)
return render(request,'index.html')
4.视图层之FBV与CBV
1.FBV:基于函数的视图。
defindex(request):
return HttpResponse('字符串')
2.CBV:基于类的视图,用面向对象报的语法来写视图层功能。
views:
from django import views
classMyLoginView(views.View):
defget(self,request):
return HttpResponse('from CBV get function')
defpost(self,request):
return HttpResponse('from CBV post function')
urls:
urlpatterns = [
path('login1/', views.MyLoginView.as_view())
]
会自动根据请求方法的不同自动匹配对应的方法并执行:
当我们访问login1/路由时,会向服务端MyLoginView发送一个get请求,因为类中有get方法,所以会直接返回HttpResponse('from CBV get function')。
当我们访问其他页面时,向login1/路由提交数据,会触发类中post方法,返回HttpResponse('from CBV post function')。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律