标签: django-crispy-forms

django-crispy-forms中的Bootstrap3内联表单不显示表单错误

我使用django-crispy-forms来呈现Bootstrap3内联形式(下面显示的代码),但是表单提交时的错误(如跳过必填字段)没有显示.它们以正常和水平形式布局.

有人可以建议可能的原因吗?

Models.py

class Person(models.Model):
    name = models.CharField(max_length=500)
    city = models.CharField(max_length=50)
    country = models.CharField(max_length=50)
    email = models.EmailField(blank=True)
Run Code Online (Sandbox Code Playgroud)

Forms.py

class EntryForm(forms.ModelForm):
    class Meta:
        model = Person

    def __init__(self, *args, **kwargs):
        super(EntryForm, self).__init__(*args, **kwargs)

        self.helper = FormHelper(self)
        self.helper.form_class = 'form-inline'
        self.helper.field_template = 'bootstrap3/layout/inline_field.html'
        self.helper.layout.append(ButtonHolder(
            Submit('save', 'Save', css_class='btn-primary btn-hg')
            )
        )
Run Code Online (Sandbox Code Playgroud)

我使用{% load crispy_forms_tags %},并{% crispy form %}在我的模板.

django django-crispy-forms

8
推荐指数
1
解决办法
3903
查看次数

Django crispy-forms,BaseGenericInlineFormSet&allow_delete

我在使用django-crispy-forms时遇到了一个问题,我无法得到答案.我有一个相当复杂的表单布局,到目前为止,一切都非常好用cripy-forms.

表单的一部分使用通用内联formset.这也是有效的,但我的问题是,我无法弄清楚如何访问delete-checkbox(当can_delete = True时)

相应的代码类似于:

class BaseReleaseReleationFormSet(BaseGenericInlineFormSet): 

    def __init__(self, *args, **kwargs):

        self.instance = kwargs['instance']
        super(BaseReleaseReleationFormSet, self).__init__(*args, **kwargs)

        self.helper = FormHelper()
        self.helper.form_id = "id_relation_form"
        self.helper.form_class = 'form-horizontal'
        self.helper.form_method = 'post'
        self.helper.form_action = ''
        self.helper.form_tag = False

        base_layout = Row(
                Column(
                       Field('name', css_class='input-small'),
                       #Field('delete', css_class='input-small'),
                       css_class='span3'
                       ),
                Column(
                       Field('url', css_class='input-xlarge'),
                       css_class='span4'
                       ),
                css_class='row relation-row',
        )

        self.helper.add_layout(base_layout)
Run Code Online (Sandbox Code Playgroud)

name和url字段根据需要使用crispy-forms呈现,但delete-checkbox显示在表单的末尾.我无法在布局中访问它.

有人知道如何解决这个问题吗?有小费吗?提前致谢!

django form-layout django-crispy-forms

7
推荐指数
1
解决办法
1499
查看次数

crispy_forms_tag' 不是有效的标签库

我正在尝试使用 Django 脆皮形式创建一个 Django 应用程序。

设置.py

CRISPY_TEMPLATE_PACK = 'bootstrap3'

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'face',    #app name
    'crispy_forms',
)
Run Code Online (Sandbox Code Playgroud)

索引.html

{% extends "base.html" %}
{% load crispy_forms_tag %}

{% block title %}
AuthorizedUser
{% endblock title %}

{% block content %}
    <h1>Quote of the Day</h1>
    <blockquote>{{quote}}</blockquote>
    <p>Or, hit reload if you want a new one...</p>

    <form method="POST" action="{% url  %}"  >
        {% csrf_token %}
        {{ form|crispy}}
        <input type="hidden" name="quote" value="{{quote}}" />
        <input type="hidden" name="access_token" value="{{access_token}}" /> …
Run Code Online (Sandbox Code Playgroud)

django django-crispy-forms

7
推荐指数
3
解决办法
2万
查看次数

使用Django Crispy Forms渲染单独的MultiWidget字段

我的具体情况是我需要在一行中渲染这个字段(使用Bootstrap 3):

在此输入图像描述

所以类似于:

<div class="form-group">
    <label>Amount:</label>
    <div class="row">
        <input name="amount_0" type="number" class="col-xs-8">
        <select name="amount_1" class="col-xs-4">...</select>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

使用:https://github.com/jakewins/django-money
小工具:https://github.com/jakewins/django-money/blob/master/djmoney/forms/widgets.py

模型:

from djmoney.models.fields import MoneyField

class MyModel(models.Model):
    ...
    amount = MoneyField(...)
    ...
Run Code Online (Sandbox Code Playgroud)

形成:

class MyForm(forms.ModelForm):
    ...
    @property
    def helper(self):
        helper = FormHelper()
        helper.form_tag = False

        helper.layout = Layout()
        helper.layout.fields = [
            ...
            'amount',
            ...
        ]

        return helper
    ...
Run Code Online (Sandbox Code Playgroud)

django django-crispy-forms twitter-bootstrap-3

7
推荐指数
1
解决办法
1455
查看次数

如何通过 django-crispy-forms 中的取消按钮重定向到 url?

class StudentCreateView(CreateView):
    model = Student
    template_name = "students/students_edit.html"
    form_class = StudentCreateForm

def get_success_url(self):
    return u'%s?status_message=??????? ??????? ?????????' % reverse('home')

def post(self, request, *arg, **kwargs):
    if request.POST.get('cancel_button'):
        messages.info(self.request, u"????????? ?????????")
        return HttpResponseRedirect(
            u'%s?status_message=????????? ?????????'
            % reverse('home'))
    else:
        messages.success(self.request, u"??????? ??????? ?????????") 
        return super(StudentCreateView, self).post(
            request,*arg, **kwargs)
def get_context_data(self, **kwargs):
    context = super(StudentCreateView, self).get_context_data(**kwargs)
    context['meta'] = u'????????? ????????'
    context['headtext'] = context['meta']
    return context
Run Code Online (Sandbox Code Playgroud)

在此视图中,如果单击取消按钮,我会检查发布功能

self.helper.layout[-1] = FormActions(
        Submit('add_button',u'????????', css_class='btn btn-primary'),
        Submit('cancel_button', u'?????????'),
        )
Run Code Online (Sandbox Code Playgroud)

只有在 createview 提交取消不能正常工作。单击它会尝试检查表单,当我想取消时,它会回答我以解决表单上的所有问题。我已将提交更改为按钮,按钮取消根本不起作用。我在 stackoverflow 上发现了一个变体,将 onclick 方法添加到按钮,但它不适合我(当我在重定向窗口信息消息上取消或发布表单时,它告诉我发布或取消的状态。所以当我尝试 onclick 方法时,它推送了过去的页面,所以没有显示信息消息。如何修复 …

forms django model-view-controller views django-crispy-forms

7
推荐指数
2
解决办法
2385
查看次数

Crispy 表单抛出 VariableDoesNotExist 错误,在表单上查找键 [html5_required] 失败

我使用 allauth 用电子邮件登录,并做了一个非常基本的自定义登录表单和 allauth 的模板覆盖并显示登录表单。点击 URL 会让我直接进入异常:

在 [{'True': True, 'False': False, 'None': None}, {'True': True, 'False': False, 'None': None, 'form 中查找键 [html5_required] 失败':,'form_show_errors':真,'form_show_labels':真,'label_class':'','field_class':''},{'forloop':{'parentloop':{},'counter0':1,' counter': 2, 'revcounter': 2, 'revcounter0': 1, 'first': False, 'last': False}, 'field': }, {}]

然后我必须继续调试器两次才能在表单上结束。

我试图寻找这个特定的[html5_required]标签/密钥,但没有找到任何人丢失相同的密钥。

我删除了自定义登录表单settings.py以查看是否存在问题,但这没有帮助。

我什至用一个简单的 ```ModelForm`` 测试它,只显示两个字段并遇到了同样的问题。

我已经尝试了两种:基于类的视图(用于登录)和基于函数的视图(用于配置文件),我在两者上都遇到了同样的问题。

设置.py:


INSTALLED_APPS = [
   ...
   'crispy_forms',
   'allauth',
   'allauth.account',
   'allauth.socialaccount',
   'allauth.socialaccount.providers.google',
   ...
]

CRISPY_TEMPLATE_PACK = 'bootstrap4'

ACCOUNT_FORMS = {
   "login": "users.forms.CustomLoginForm"
}
Run Code Online (Sandbox Code Playgroud)

表格.py

from django.utils.translation import ugettext as _
from django.urls import reverse_lazy …
Run Code Online (Sandbox Code Playgroud)

django django-crispy-forms django-allauth

7
推荐指数
1
解决办法
3824
查看次数

Django Crispy Forms添加Div提交按钮

使用Django Crispy Forms我想在我的提交按钮周围添加一个类,如下所示:

<div class="col-lg-offset-3 col-lg-9">
    <input type="submit" value="Log Me In" class="btn btn-default" />
</div>
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所管理的:

<input type="submit" value="Log Me In" class="btn btn-default" />
Run Code Online (Sandbox Code Playgroud)

使用此代码:

 def __init__(self, host=None, *args, **kwargs):
        super(AuthenticationForm, self).__init__(*args, **kwargs)
        self.host = host
        self.helper = FormHelper()
        self.helper.form_class = 'form-horizontal'
        self.helper.label_class = 'col-lg-3'
        self.helper.field_class = 'col-lg-8'
        self.helper.add_input(
            Submit('submit', 'Log Me In', css_class='btn btn-default',)
        )
Run Code Online (Sandbox Code Playgroud)

你可以看到我几乎就在那里,有没有办法包括额外的div?

python django django-crispy-forms

6
推荐指数
1
解决办法
3235
查看次数

没有使用Django Crispy Forms渲染的Formset的非表单错误

我实现了一个自定义的clean方法来验证我的formset.我知道有错误,因为我可以将它们打印到控制台,但这些non_form_errors()永远不会在我的模板中呈现.我该如何渲染它们?

template.html:

<form action="{% url 'databank:register' %}" method="post" enctype="multipart/form-data">
  {% csrf_token %}

  <div class="container">
    <div class="row" style="margin-top: 30px"> 
      <div class="col-md-10 col-md-offset-1">
        {{ dataset_form.media }}
        {% crispy dataset_form %}
          <div class="authorFormset">
            {% for form in formset %}
              {% crispy form helper %}
            {% endfor %}    
          </div>
        {% crispy terms_form %}
      </div>
    </div>
  </div>

  <div class="container">
    <div class="row">
      <div class="col-md-10 col-md-offset-1">
        <input type="submit" class="btn btn-lg btn-success" value="Submit">
      </div>
    </div>
</div>
{{ formset.management_form }}
Run Code Online (Sandbox Code Playgroud)

forms.py:

class BaseAuthorFormset(BaseFormSet):
    def clean(self):   
        if any(self.errors):
            return
        roles …
Run Code Online (Sandbox Code Playgroud)

django-forms formsets django-crispy-forms

6
推荐指数
2
解决办法
1300
查看次数

无法使用django-crispy表单在同一行显示标签和字段

我正在尝试将我的字段标签放在表单的左侧,右侧有文本输入.但是,我似乎无法使其发挥作用.这是我放置的设置.

forms.py

helper = FormHelper()
helper.form_class = 'form-horizontal'
helper.layout = Layout(
    Field('test_field'),
    FormActions(
        Submit('submit', 'Record', css_class='btn btn-primary'),
        Reset('reset', 'Clear', css_class='btn btn-default'),
    )
)
Run Code Online (Sandbox Code Playgroud)

form.html

{% extends 'base.html' %}
{% load crispy_forms_tags %}

{% block page_panel %}
{% crispy form %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

生成的html就像这个 结果

django django-forms django-crispy-forms

6
推荐指数
1
解决办法
1259
查看次数

带有自由文本错误的数据列表“选择一个有效的选项。该选项不是可用的选项之一。”

我正在使用脆皮表单构建一个“创建菜谱”表单,并且尝试使用数据列表输入字段供用户输入自己的成分,例如“大番茄”或从数据库中已有的全局成分中进行选择,例如“番茄”或“鸡肉” 。但是,无论我输入新成分还是选择现有成分,我都会收到以下错误:“选择有效的选择。该选择不是可用的选择之一。”。我该如何修复这个错误?

视觉的: 表单 html

模型.py

class Recipe(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    websiteURL = models.CharField(max_length=200, blank=True, null=True)
    image = models.ImageField(upload_to='image/', blank=True, null=True)
    name = models.CharField(max_length=220) # grilled chicken pasta
    description = models.TextField(blank=True, null=True)
    notes = models.TextField(blank=True, null=True)
    serves = models.CharField(max_length=30, blank=True, null=True)
    prepTime = models.CharField(max_length=50, blank=True, null=True)
    cookTime = models.CharField(max_length=50, blank=True, null=True)


class Ingredient(models.Model):
    name = models.CharField(max_length=220)

    def __str__(self):
        return self.name

class GlobalIngredient(Ingredient):
    pass # pre-populated ingredients e.g. salt, sugar, flour, tomato

class UserCreatedIngredient(Ingredient): # ingredients user adds, e.g. Big Tomatoes
    user …
Run Code Online (Sandbox Code Playgroud)

django django-crispy-forms html-datalist

6
推荐指数
1
解决办法
988
查看次数