Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django项目表格无效?_Python_Django_Forms - Fatal编程技术网

Python django项目表格无效?

Python 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

我一直在尝试实现一种发布项目帖子的方法,用户可以上传多张图片。多图像上传可以工作,但发布帖子本身不起作用

我不知道该如何处理项目表单

即使字段的值正确,它也无效

我的代码是:

views.py

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文件中。