django FBV&&CBV upload-file json 路由系统 反向解析
Posted anyux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django FBV&&CBV upload-file json 路由系统 反向解析相关的知识,希望对你有一定的参考价值。
FBV与CBV
参考网址
https://www.cnblogs.com/liwenzhou/articles/8305104.html#autoid-1-1-0
request对象
参考网址
https://www.cnblogs.com/liwenzhou/articles/8305104.html#autoid-2-0-2
上传文件示例
def upload(request):
"""
保存上传文件前,数据需要存放在某个位置。默认当上传文件小于2.5M时,django会将上传文件的全部内容读进内存。从内存读取一次,写磁盘一次。
但当上传文件很大时,django会把上传文件写到临时文件中,然后存放到系统临时文件夹中。
:param request:
:return:
"""
if request.method == "POST":
# 从请求的FILES中获取上传文件的文件名,file为页面上type=files类型input的name属性值
filename = request.FILES["file"].name
# 在项目目录下新建一个文件
with open(filename, "wb") as f:
# 从上传的文件对象中一点一点读
for chunk in request.FILES["file"].chunks():
# 写入本地文件
f.write(chunk)
return HttpResponse("上传OK")
#上传文件示例代码
django输出json格式
view.py,视图
def json(request):
from django.http import JsonResponse
from json import dumps
data = {
\'素还真\' : "半神半圣亦半仙",
\'一叶书\' : "笑尽英雄",
\'叶小钗\' : "啊",
}
data_str = dumps(data,ensure_ascii=False,sort_keys=True, indent=4, separators=(\',\', \':\'))
return HttpResponse(data_str,content_type="application/json")
# return HttpResponse(data_str,)
# return JsonResponse(data)
django 上传文件
def upload(request):
if request.method == "POST":
# 获取文件名称
filename =request.FILES[\'filename\'].name
print(filename)
# 获取文件上传集合
print(request.FILES)
# 取上传的单个文件进行写入操作
with open(filename, "wb") as f:
# 以每个chunks为单元写入磁盘
for i in request.FILES[\'filename\'].chunks():
f.write(i)
# 返回响应值
return HttpResponse("上传OK")
# return HttpResponse("ok")
else:
return render(request,\'user/upload.html\')
路由系统
http://www.cnblogs.com/liwenzhou/p/8271147.html
- 正则表达式的模糊匹配
- 分组匹配 --> 相当于给视图函数传递位置参数
- 分组命名匹配 --> 相当于给视图函数传递关键字参数
(两个不要混合使用)
反向解析URL
本质上就是给url匹配模式起别名,然后用过别名拿到具体的URL路径
- 怎么起别名?
在url匹配模式中,定义name="别名" - 如何使用?
-
在模板语言里面使用:
{% url "别名" %} --> 得到具体的URL路径 -
在视图中如何使用:
from django.urls import reversereverse("别名") --> 得到具体的URL路径
-
- 如何传参数?
-
模板语言中:
{% url "别名" 2018 "nb" %} -
视图函数中
传位置参数:
reverse("别名", args=(2018, "nb"))传关键字参数:
reverse("别名" kwargs={"year": 2018, "title": "nb"})
-
- namespace
为了防止不同的app下面的url匹配模式有重复的别名
以上是关于django FBV&&CBV upload-file json 路由系统 反向解析的主要内容,如果未能解决你的问题,请参考以下文章