Skip to main content
 首页 » 编程设计

python之Django Crispy 表单不显示 bootstrap/css 或按钮

2025年02月15日28qq号

我的模型使用了清晰的表格,虽然表格看起来很普通, Bootstrap 没有显示,而且似乎没有按钮。即使添加按钮并单击它(刷新),也没有数据保存到数据库中。我尝试了很多方法。似乎出了什么问题?任何帮助将不胜感激。

表单.py

   class PlotForm(forms.ModelForm): 
    helper = FormHelper() 
    helper.form_tag = False 
    helper.form_method = 'POST' 
 
    class Meta: 
        model = Plot 
        fields = '__all__' 

观看次数:

def plot_form(request): 
    return render(request, 'plot_form.html', {'form': PlotForm()}) 

html:

{% load crispy_forms_tags %} 
    <form action="" method="POST"> 
   {% crispy form %} 
        <input type="submit" class="btn btn-default" value="save"> 

请您参考如下方法:

首先缺少 {% csrf_token %}。其次,如果我没记错的话,您需要使用 {{ form|crispy }} 加载表单。

第三,我建议使用 Widget Tweaks

<form method='POST' action="/" enctype='multipart/form-data'> 
 {% load widget_tweaks %} 
 {% csrf_token %} 
 {{ form.first_name |add_class:"customCSS1 customCSS2" }} 
 {{ form.second_name |add_class:"customCSS3 customCSS4" }} 
</form> 
{{ form.media.js }} 

使用此插件,您可以根据需要设置表单样式。所有 Css 类都有效。 Crispy 很好,但是您已经进入了文档,并且当您想要设置表单样式时,总是需要做一些变通方法。使用 Widget Tweaks,您可以简单地应用任何 CSS 类。当您真正了解脆皮的使用方法时,您可以做很多事情,但要做到这一点…… 我在某个时候切换了,现在一切都像一个魅力

如果不发表评论,希望对您有所帮助:)

Edit

我刚刚在您的 views.py 中看到了一些东西。据我所知,您没有引用正确的表格。

from appName.forms import PlotForm 
 
def plot_form(request): 
  form = PlotForm(request.POST or None, request.FILES or None) #request files is only required when you want to upload a file 
  if form.is_valid(): 
    instance = form.save(commit = False) 
    ... 
    instance.save() 
    #messages.success(request, 'form was saved') #optional 
  context = { 
  'form':form, 
  } 
  return render(request, 'AppName/plot_form.html', context) 

也许这样就可以了。您没有表单验证,我不确定 {'form': PlotForm()} 中的“()”是否会破坏代码。