Django表单字段未加载到temp

2024-06-25 23:27:45 发布

您现在位置:Python中文网/ 问答频道 /正文

尽管没有引发任何异常(我假设这意味着该错误不是视图或表单错误),但所讨论的表单根本不会呈现表单字段。所以我的问题是,还有什么会导致这样的错误呢? 表格:

class HandInForm(forms.ModelForm):
    class Meta:
        model = AssignmentsHandedIn
        fields = ['assignment', 'user_hand_in']
class ResourceForm(forms.ModelForm):
    """Form definition for File."""
    class Meta:
        """Meta definition for Fileform."""

        model = Resources
        fields = ['file']
        widgets = {
            'file': forms.FileInput(attrs={"class": "form-control input"}),
        }

查看:

def hand_in(request, assignment_id):
    assignment_actual = Assignments.objects.get(pk=assignment_id)
    class_assignment = assignment_actual.class_related
    if request.method == "POST":
        assignment_form = HandInForm(data=request.POST)
        resource_form = ResourceForm(data=request.POST)
        if assignment_form.is_valid() and resource_form.is_valid():
            assignment = assignment_form.save()
            assignment.user_hand_in = request.user
            assignment.assignment = assignment_actual
            resource = resource_form.save()
            resource.assignments = assignment
            resource.class_related = class_assignment
        else:
            print(assignment_form.errors, resource_form.errors)
    else:
        assignment_form = HandInForm()
        resource_form = ResourceForm()
    return render(request, "DC/handin.html", {'assignment_form': assignment_form, 'resource_form': resource_form})

模板:

    {% extends "DC/base.html" %}
    {% block body_block %}
    <br><br><br><br>
    <h1 class="titley">New Resource</h1>
    <form class="jumbotron" enctype="multipart/form-data" method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit" class="btn btn-primary" name="button">Create</button>
    </form>
    <script>
        var editor = new MediumEditor('.editable');
    </script>

    {% endblock body_block %

}

Tags: inbrformrequest错误formsresourcemeta
2条回答

这是因为您分别将窗体命名为HandInForm()ResourceForm()

assignment_form = HandInForm()
resource_form = ResourceForm()

但是,在模板中使用名称form

{{ form.as_p }}

改用:

{{ assignment_form.as_p }}

{{ resource_form.as_p }}

视图用不同的名称发送表单

{'assignment_form': assignment_form, 'resource_form': resource_form}

但是您使用form调用表单。您应该使用您定义的名称。就像

{{ assignment_form.as_p }}{{ resource_form.as_p }}

相关问题 更多 >