我的格式如下:
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
<label for="file_id" style="margin-right:1em;">Import Innovations as JSON</label>
<input type="file" id="file_id">
<button style="margin-left:2em;" type="submit">Import</button>
</form>
我的观点:
def index(request):
if request.user.is_authenticated:
if request.method == "POST":
file = request.FILES
# do some parsing and create the object here
我想做的是选择json文件并解析它,然后使用这些值在我的models.py中创建一个定义的对象,问题是我无法打开json文件来解析它,我尝试做file = request.FILES.read()
,但得到'MultiValueDict' object has no attribute 'read'
。我也尝试过json.loads(request.POST)
,但遇到以下错误:
the JSON object must be str, bytes or bytearray, not QueryDict
。
我不需要将json文件保存在任何地方,我只需要临时进行解析即可。正确的方法是什么?
答案 0 :(得分:1)
您应该先为文件输入选择一个名称。
<input type='file' name='jsonfile'>
然后以其名称作为密钥获取文件:
file=request.FILES['jsonfile']