Django 不渲染表单

问题描述 投票:0回答:1

当我在浏览器中请求url时,django不会渲染forms.py中定义的表单,而只会渲染bulk_import.html中硬编码的html。

bulk_import.html

{% extends 'score/base.html' %}
{% load static %}
{% block content %}

    <div class="container my-5">
    <h1>Bulk Import</h1>
    <form action="" method=POST>
        {% csrf_token %}
        {{ form2 }}
        <input type="submit" value="Absenden" class="btn btn-secondary">
    </form>

    </div>
{% endblock %}

forms.py

class BulkModulImport(forms.Form):
    text = forms.Textarea(attrs={'class': 'form-control', 'rows': '4'})

views.py

def bulk_modul_import(request):
    submitted = False
    if request.method == "POST":
        form = BulkModulImport(request.POST)
        if form.is_valid():
            def remove_dots_and_numbers(text):
                lines = text.split('\n')
                updated_lines = []
                for line in lines:
                    # Use regular expression to remove dots and numbers at the end of each line
                    updated_line = line.replace(' .', '')
                    updated_line = re.sub(r'\s*\d*$', '', updated_line)
                    if "Module der Lehreinheit" not in updated_line:
                        Modul(title=line,proposer=request.user, dozent=None, created_date=timezone.now(), description="").save()
                        updated_lines.append(updated_line)

            remove_dots_and_numbers(form.cleaned_data['text'])

            messages.success(request, ('Du hast erfolgreich einen Bulk-Import der Module durchgeführt!'))
            return HttpResponseRedirect(reverse('modul_list'))
    else:
        form2 = BulkModulImport()
        return render(request, 'score/bulk_import.html', {'form2': form2})
python django django-forms django-templates
1个回答
0
投票

您将小部件用作表单字段。我使用了

CharField
字段并在其中放置了一个小部件。之后,将显示表单字段。

class BulkModulImport(forms.Form):
    text = forms.CharField(widget=forms.Textarea(attrs={'class': 'form-control', 'rows': '4'}))

文档:小部件

© www.soinside.com 2019 - 2024. All rights reserved.