Python django项目表格无效?
我一直在尝试实现一种发布项目帖子的方法,用户可以上传多张图片。多图像上传可以工作,但发布帖子本身不起作用 我不知道该如何处理项目表单 即使字段的值正确,它也无效 我的代码是: views.pyPython django项目表格无效?,python,django,forms,Python,Django,Forms,我一直在尝试实现一种发布项目帖子的方法,用户可以上传多张图片。多图像上传可以工作,但发布帖子本身不起作用 我不知道该如何处理项目表单 即使字段的值正确,它也无效 我的代码是: views.py class CreateProjectsView(View): def get(self, request): p_photos = P_Images.objects.all() #project_form = ProjectsForm(initial=self.i
class CreateProjectsView(View):
def get(self, request):
p_photos = P_Images.objects.all()
#project_form = ProjectsForm(initial=self.initial)
project_form = ProjectsForm
context = {
'p_photos': p_photos,
'project_form': project_form,
}
return render(self.request, 'projects/forms.html', context)
def post(self, request):
project_form = ProjectsForm(request.POST or None, request.FILES or None)
p_formset = P_ImageForm(request.POST, request.FILES)
# Checks if the project_form is valid before save
if project_form.is_valid():
instance = project_form.save(commit=False)
instance.user = request.user
instance.save()
# Checks if multiple image upload is valid before save
if p_formset.is_valid():
#if project_form.is_valid() and p_formset.is_valid():
#instance = project_form.save(commit=False)
#instance.user = request.user
#instance.save()
images = p_formset.save(commit=False)
images.save()
data = {
'is_valid': True,
'name': images.p_file.name,
'url': images.p_file.url
}
else:
data = {
'is_valid': False,
}
return JsonResponse(data)
forms.html
<form action="{% url 'create_post:retrieve_projects' %}" method="POST" enctype="multipart/form-data">
{% csrf_token %}
{% for hidden in project_form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% for field in project_form %}
{{ field.errors }}
{{ field }} <br />
{% endfor %}
<input type="submit" value="OK">
</form>
<form action="{% url 'create_post:create_projects' %}" method="POST" enctype="multipart/form-data">
{% csrf_token %}
{% for hidden in project_form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% for field in project_form %}
{{ field.errors }}
{{ field }} <br />
{% endfor %}
<input type="submit" value="OK">
</form>
{%csrf_令牌%}
{%用于隐藏在项目\表单中。隐藏\字段%}
{{隐藏}}
{%endfor%}
{项目中字段的%u形式%}
{{field.errors}}
{{field}}
{%endfor%}
如果表单无效,您应该为用户提供更正错误并重新提交表单的方法。也许是这样的:
if project_form.is_valid():
instance = project_form.save(commit=False)
instance.user = request.user
instance.save()
else:
return render(request, 'project_form.html', {'form': project_form})
所以我真的找到了解决办法 问题出现在forms.html中 我将表单部分中的“创建帖子:检索帖子项目”更改为“创建帖子:创建帖子项目” forms.html
<form action="{% url 'create_post:retrieve_projects' %}" method="POST" enctype="multipart/form-data">
{% csrf_token %}
{% for hidden in project_form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% for field in project_form %}
{{ field.errors }}
{{ field }} <br />
{% endfor %}
<input type="submit" value="OK">
</form>
<form action="{% url 'create_post:create_projects' %}" method="POST" enctype="multipart/form-data">
{% csrf_token %}
{% for hidden in project_form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% for field in project_form %}
{{ field.errors }}
{{ field }} <br />
{% endfor %}
<input type="submit" value="OK">
</form>
{%csrf_令牌%}
{%用于隐藏在项目\表单中。隐藏\字段%}
{{隐藏}}
{%endfor%}
{项目中字段的%u形式%}
{{field.errors}}
{{field}}
{%endfor%}
它仍然不工作。即使您输入了正确的值和文件,它仍然无效。我在想,如果我能在get()中修复我的项目表单,也许它会起作用。我想我在get()中做得不对。但我不知道该怎么做,表单显示了哪些错误?(您正在页面模板中显示表单错误,是吗?)它不会发布任何错误。只是什么都没有发生。我不知道如何在我的模板中显示表单错误,我该怎么做?所以我实际上找到了一个解决方法。问题实际上在html文件中。