django - 尝试在 Django 中保存多个文件:没有返回 HttpResponse 对象。它返回 None 而不是
问题描述
请帮忙。我正在尝试使用 CreateView 在 Django 中保存多个文件。但我只能保存所选列表中的最后一个文件。然后我将我的视图更改为与我在这里看到的大部分解释相匹配的函数视图。现在我得到了值错误。
下面是两个视图。CreateView(CBV) 和函数 View。谢谢
创建视图
@method_decorator(login_required, name='dispatch')
class UpdateMatterCreateView(CreateView):
form_class = UpdateMatterForm
model = MatterUpdates
template_name = 'matter/matter_instance_create.html'
success_url = reverse_lazy('matter_list')
def form_valid(self, form):
form = UpdateMatterForm(self.request.POST, self.request.FILES)
with transaction.atomic():
form.instance.client_id = self.kwargs['client_id']
form.instance.firm_id = self.kwargs['firm_id']
form.instance.matter_id = self.kwargs['matter_id']
form.instance.user_id = self.request.user.id
files = self.request.FILES.getlist('files')
for f in files:
docs_path = Documents.objects.create(matter_update_id=self.kwargs['matter_id'], file_path=f)
docs_path.save()
return super(UpdateMatterCreateView, self).form_valid(form)
def get_context_data(self, **kwargs):
context = super(UpdateMatterCreateView, self).get_context_data(**kwargs)
context['object'] = Matter.objects.get(id=self.kwargs['matter_id'])
return context
功能视图
def update_matter_instance(request, firm_id, client_id, matter_id):
if request.method == 'POST':
form = UpdateMatterForm(request.POST, request.FILES)
if form.is_valid():
title = form.instance.title
content = form.instance.content
created_date = form.instance.created_date
created_time = form.instance.created_time
matter_update_link = MatterUpdates.objects.create(firm_id=firm_id, client_id=client_id,
matter_id=matter_id, title=title, content=content,
created_date=created_date, created_time=created_time,
user_id=request.user.id, )
matter_update_link.save()
files = request.FILES.getlist('files')
for f in files:
docs_path = Documents.objects.create(matter_update_id=matter_id, file_path=f)
docs_path.save()
return redirect('matter_list')
else:
form = UpdateMatterForm()
return render(request, 'matter/matter_instance_create.html', {'form': form})
表格.py
class UpdateMatterForm(forms.ModelForm):
class Meta:
model = MatterUpdates
exclude = ['matter', 'client', 'firm', 'sys_date', 'user']
widgets = {
'title': forms.TextInput(
attrs={'class': 'form-control', 'placeholder': 'Enter Title'}),
'content': RichTextFormField(),
'created_date': forms.DateInput(
attrs={'class': 'form-control', 'placeholder': 'mm/dd/yyyy'}),
'created_time': forms.TimeInput(
attrs={'class': 'form-control', 'id': 'timepicker2', 'type': 'text'}),
'files': forms.ClearableFileInput(attrs={'multiple': True})
}
网址.py
函数正则表达式
url(r'^legal_stallion/stallion_matter_instance_update/(?P<firm_id>[0-9A-Fa-f-]+)/(?P<client_id>[0-9A-Fa-f-]+)/'
r'(?P<matter_id>[0-9A-Fa-f-]+)/$', views.update_matter_instance, name='update_matter_instance'),
类正则表达式
url(r'^legal_stallion/stallion_matter_instance_update/(?P<firm_id>[0-9A-Fa-f-]+)/(?P<client_id>[0-9A-Fa-f-]+)/'
r'(?P<matter_id>[0-9A-Fa-f-]+)/$', views.UpdateMatterCreateView.as_view(), name='update_matter_instance'),
模板
<form class="cmxform form-horizontal " id="commentForm" method="post" action="#" enctype="multipart/form-data">
{% csrf_token %}
{{ form.errors }}
<div class="form-group " style="margin-bottom: 0px; margin-top: 0px">
<label for="cname" class="control-label col-lg-3">Title <span style="color: darkred">*</span></label>
<div class="col-lg-6">
{{ form.title }}
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Date <span style="color: darkred">*</span></label>
<div class="col-lg-3">
<div class="input-group date">
{{ form.created_date }}
<span class="input-group-addon"><i class="glyphicon glyphicon-th fa fa-calendar"></i></span>
</div>
</div>
<div class="col-sm-3">
<div class="input-group bootstrap-timepicker timepicker">
{{ form.created_time }}
<span class="input-group-addon"><i class="glyphicon glyphicon-time fa fa-clock-o"></i></span>
</div>
</div>
</div>
<div class="form-group " style="margin-bottom: 0px; margin-top: 0px; margin-bottom: 10px">
<label for="cemail" class="control-label col-lg-3">Content </label>
<div class="col-lg-8">
{{ form.content }}
</div>
</div>
<div class="form-group " style="margin-bottom: 0px; margin-top: 0px; margin-bottom: 10px">
<label for="cemail" class="control-label col-lg-3">Select Files </label>
<div class="col-lg-6">
{{ form.files }}
</div>
</div>
<div class="form-group">
<div class="col-lg-offset-3 col-lg-6">
<button class="btn btn-primary" type="submit">Submit</button>
</div>
</div>
</form>
解决方案
推荐阅读
- facebook - Facebook Pixel Error OAuth "Facebook Platform" "invalid_token" "验证访问令牌时出错:用户尚未授权应用程序
- javascript - 出现错误 - 错误:在 .env.local 文件中写入 EPIPE
- jquery - 使用 JQuery 到 wordpress 管理页面 wp-admin
- javascript - 跨域请求被阻止:同源策略不允许读取位于 ... 的远程资源:CORS 标头“Access-Control-Allow-Origin”缺失
- uart - Raspberry Pi4 Uart 接收缓冲区溢出
- php - Apache 缺少授权标头
- verilog - Icarus Verilog 警告 $readmemh:标准不一致,1364-2005 之后
- mysql - 如何通过 created_at 对一组行进行排序?
- reactjs - 地图实例的 React-leaflet v3 和 Leaflet-contextmenu 插件问题
- linux - 从二进制文件 ubuntu 18.04 构建 ninja