首页 > 解决方案 > Django Crispy Forms;不加载按钮

问题描述

我只是对 Crispy Forms 有疑问;我无法加载按钮。我检查了很多其他 StackOverflow 表单,但我遵循的所有示例似乎都不起作用。

例子forms.py

from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit

from django import forms

from .models import ExampleModel

class ExampleModelForm(forms.ModelForm):
    def __int__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.add_input(Submit('submit', 'Submit'))

    class Meta:
        model = ExampleModel
        fields = ['content', 'title']

例子views.py

from django.shortcuts import render
from django.http import HttpResponseRedirect

from .forms import ExampleModelForm

def get_form(request):
    if request.method == 'POST':
        form = ExampleModelForm(request.POST)
        if form.is_valid():
            return HttpResponseRedirect('/success/')

    else:
        form = ExampleModelForm()

    return render(request, 'example_form.html', {'form': form})

例子example_form.html

{% extends 'base.html' %}

{% load crispy_forms_tags %}

{% block content %}
    {% crispy form %}
{% endblock %}

我的表单加载得很漂亮,但我就是无法显示按钮。我查看了文档,但看不出我在做什么不同。也许它不能很好地与 ModelForms 配合使用?我不知道。

我尝试将 的位置更改def__init__...为低于Meta班级。我定义super()super(ExampleModelForm, self)self.helper = FormHelper(self)

我什至尝试在 html 文件中更改{% crispy form %}为。{% crispy form form.helper %}它只是打破。

我也尝试过这个例子。只是没有什么对我有用。

设置:
Django:3.2.5
Crispy-Forms:1.12.0

标签: pythondjangodjango-crispy-forms

解决方案


好的,我想通了,但我不知道为什么会这样。

class ExampleModelForm(forms.ModelForm):
    helper = FormHelper()
    helper.add_input(Submit('submit', 'Submit'))

    class Meta:
        model = ExampleModel
        fields = ['content', 'title']

基本上你不需要def__init__(...有人可以向我解释一下吗?


推荐阅读