简体   繁体   English

Django表单字段未加载到模板上

[英]Django form fields not loading on template

The form in question won't render the form fields at all despite not raising any exceptions (which I'm assuming means the error is not a view or form error). 尽管没有引发任何异常(我假设这是错误不是视图或表单错误),但有问题的表单根本不会呈现表单字段。 So my question is, what else might cause such an error ? 所以我的问题是,还有什么可能导致这种错误? forms: 形式:

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"}),
        }

view: 视图:

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})

Template: 模板:

    {% 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 %

}

That's because you name your forms HandInForm() ResourceForm() respectively: 那是因为您分别命名了表单HandInForm() ResourceForm()

assignment_form = HandInForm()
resource_form = ResourceForm()

However, you use the name form in templates 但是,您在模板中使用名称form

{{ form.as_p }}

use instead: 改用:

{{ assignment_form.as_p }}

{{ resource_form.as_p }}

Your view sends your form with different names. 您的视图使用不同的名称发送表单。

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

But you call form using form . 但是您使用form调用form You should use your defined name. 您应该使用定义的名称。 like 喜欢

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM