标签: django-crispy-forms

在django-crispy-forms中使用字段标签作为占位符

我正在考虑使用DRY方式为我的<input>HTML元素的占位符属性使用字段标签.我正在使用django-crispy-forms.

现在我有:

class FilterForm(Form):

    query = CharField(max_length=50, label='', required=False)

    def __init__(self, data=None, files=None, **kwargs):
        self.helper = FormHelper()
        self.helper.layout = Layout(
            Field('query', placeholder='Search ...'),
        )
        super(FilterForm, self).__init__(data, files, **kwargs)
Run Code Online (Sandbox Code Playgroud)

但是,我不希望单独设置标签和占位符,因为这最终会有更多的字段,而且非常冗长.

你有什么建议?

django twitter-bootstrap django-crispy-forms

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

字段标签酥脆形式Django

我想为两种形式使用相同的模型并更改字段的标签如何更改标签?

这是我的一个表格:

class jobpostForm(forms.ModelForm):

    class Meta:

        model = jobpost
        fields = ('job_type','title','company_name','location','country','description','start_date','end_date','how_to_apply')

    widgets = {

        'job_type':RadioSelect(),    
        'location':TextInput(attrs={'size':'70','cols': 10, 'rows': 20}),   
        'description': TinyMCE(attrs={'cols':'100', 'row': '80'}),
            'start_date':AdminDateWidget(attrs={'readonly':'readonly'}),
            'end_date':AdminDateWidget(attrs={'readonly':'readonly'}),
            'how_to_apply':RadioSelect(),

    }

    def __init__(self, *args, **kwargs):
        super(jobpostForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_class = 'horizontal-form'
        self.helper.form_id = 'id-jobpostform'
        self.helper.form_class = 'blueForms'
        self.helper.form_method = 'post'

        self.helper.form_action = '/portal/next/post/'

        self.helper.add_input(Submit(_('submit_addcontent'), 'Preview'))


        super(jobpostForm, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

我希望将"位置"更改为"工作地点"..我该怎么做?

django django-forms django-crispy-forms

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

Django上的Crispy Form VariableDoesNotExist

对于Django上的酥脆形式,我一直在努力 VariableDoesNotExist at / Failed lookup for key [form] in u'[{\'False\': False, \'None\': None,.....

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

{% block loginForm %}
    <div class="container" style="padding-bottom: 70px;">
        <div class='row'>
            <div class='col-md-6 col-md-offset-3'>
                <div class="well">
                    <legend>Sign in</legend>
                    <form method="post" action="{% url 'django.contrib.auth.views.login' %}" class="form-horizontal">
                        {% crispy form %}
                        <input type="hidden" name="next" value="{{ next }}"/>
                    </form>
                </div>
            </div>
        </div>
    </div>

{% endblock loginForm %}
Run Code Online (Sandbox Code Playgroud)

forms.py:

from django import forms
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Div, Submit, …
Run Code Online (Sandbox Code Playgroud)

python forms django django-crispy-forms

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

django-crispy-forms输入大小

根据django-crispy-form文档,我将能够用类更改输入宽度input-small.但我的表单看起来宽度为100%:

在此输入图像描述

另外,如果我将css_class添加到Field,则大小保持为宽度:100%(.form-control)

我已按照文档说明设置表单:

class LoginForm(forms.Form):
    usuari = forms.CharField( help_text = u'Codi Usuari')
    paraula_de_pas = forms.CharField( help_text = u'Paraula de pas')

    # Uni-form
    helper = FormHelper()
    helper.form_class = 'form-horizontal'
    helper.label_class = 'col-lg-2'  
    helper.field_class = 'col-lg-8'  
    helper.layout = Layout(
        PrependedText('usuari', 
                      '<span class="glyphicon glyphicon-user"></span> ',  
                      css_class='input-small'),
        PrependedText('paraula_de_pas', 
                      '<span class="glyphicon glyphicon-asterisk"></span> ', 
                      css_class='input-small'),
        FormActions(
            Submit('save_changes', 'Entrar-hi', css_class="btn-primary"),
        )
    )
Run Code Online (Sandbox Code Playgroud)

在设置中:

CRISPY_TEMPLATE_PACK="bootstrap3"
Run Code Online (Sandbox Code Playgroud)

我是最新版本.怎么了?

django django-crispy-forms twitter-bootstrap-3

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

没有使用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
查看次数

'FormHelper' 对象在 django 中使用脆皮表单时没有属性 'append'

我是 Django 的新手,我正在尝试用脆脆的形式来设计表单。我的应用程序中有一个表单,它恰好是一个模型表单,我已经按照这里所说的/sf/answers/924111191/使 ModelForm 与脆皮表单一起工作,但收到此错误:

'FormHelper' object has no attribute 'append'

这是我的代码的外观forms.py

from django import forms
from models import Ticket, Ticketuser
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit, Layout, Fieldset, ButtonHolder
from crispy_forms.bootstrap import FormActions

class AddTicketForm(forms.ModelForm):

  def __init__(self, *args, **kwargs):
    super(AddTicketForm, self).__init__(*args, **kwargs)
    self.helper = FormHelper(self)
    self.helper.append(Submit('save', 'save'))

  class Meta:
    model = Ticket
    fields = ('id', 'comment')

  def process(self):
    data = self.cleaned_data
    data = data['comment']
    return data
Run Code Online (Sandbox Code Playgroud)

如何克服这个问题并像我想要的那样设计表单?

python django django-forms django-crispy-forms

5
推荐指数
1
解决办法
4408
查看次数

如何将额外的上下文传递给 django-crispy-forms 字段模板?

检查 django-crispyforms 的 bootstrap3 模板包中的 field.html 模板,我注意到引用了一个额外的上下文变量“标签”。您可以在模板的第 12第 41看到这一点。如何在用于呈现特定表单字段的 field.html 模板的上下文中为“标签”指定值?

django-crispy-forms

5
推荐指数
2
解决办法
2001
查看次数

如何使用每个选项的模板覆盖 ModelChoiceField / ModelMultipleChoiceField 默认小部件

背景

我有两个模型,Runs 和 Orders。一次运行将完成许多订单,因此我的订单和运行之间存在多对一关系,表示为订单上的外键。

我想构建一个 UI 来创建运行。它应该是一种有人选择要运行的订单的形式。我想在每个订单的信息旁边显示一个复选框列表。我现在正在使用django 脆皮形式

视图.py

class createRunView(LoginRequiredMixin, CreateView):
    model = Run
    form_class = CreateRunForm
    template_name = 'runs/create_run.html'
Run Code Online (Sandbox Code Playgroud)

表格.py

class CreateRunForm(forms.ModelForm):
    class Meta:
       model = Run
       fields = ['orders',]

    orders = forms.ModelMultipleChoiceField(queryset=Order.objects.filter(is_active=True, is_loaded=False))

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_method = 'post'
        self.helper.layout = Layout(
            Field('orders', template="runs/list_orders.html"),
            Submit('save', 'Create Run'),
            Button('cancel', 'Cancel'),
    )
Run Code Online (Sandbox Code Playgroud)

问题

  1. 我不确定list_orders.html模板中有哪些当地人可供我使用。似乎有{{ field }},也许form.visible_fields但是如果我深入研究其中一个TypeError: 'SubWidget' object is not iterable,我会得到一个,它几乎没有在线记录。

  2. 以上表明我可能仍然在模板中获得一个小部件,尽管事实上Field('orders', …

python django django-forms django-crispy-forms

5
推荐指数
1
解决办法
1976
查看次数

尝试在 Django 中的表单上使用脆皮表单过滤器时收到“无效表单:脆皮”错误,但仅在一个 django 应用程序中而不是在另一个应用程序中?

尝试使用crispy过滤器时,我收到一个错误:

django.template.exceptions.TemplateSyntaxError:过滤器无效:'脆'

我相信这是因为由于Django某种原因无法找到松脆的过滤器,因为当我输入一个不存在的过滤器的名称时,我收到了同样的错误。

我已经{% load crispy_forms_tags %}在 html 文档的顶部使用{{ form|crispy }}并用于应用过滤器。我还在文件中添加了“crispy forms”应用程序settings.py,并使用 安装了django-crispy-formspip,我可以清楚地看到使用pip freeze.

请注意,脆皮表单过滤器确实适用于我网站的不同 django 应用程序,即使我认为我没有更改该应用程序目录中的任何内容(但我可能错了,自从我在该目录中工作以来已经有一段时间了)。我想不出有什么不同。我读了一些关于附加到第一个应用程序目录的过滤器,它可以,仅此而已,但该信息含糊不清,当我{% load crispy_forms_tags %}从使用它的模板中删除该行时,脆过滤器仍然无法在新应用程序中工作。

这是模板。

{% extends "breed_identifier/base.html" %}
(% load crispy_forms_tags %)
{% block content %}
    <div class="content-section">
        <form method="POST">
            {% csrf_token %}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Join Today</legend>
                {{ form|crispy }}
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Sign Up</button>
            </div>
        </form>
        <div class="border-top pt-3"> …
Run Code Online (Sandbox Code Playgroud)

html django django-forms django-crispy-forms

5
推荐指数
1
解决办法
3868
查看次数