标签: django-crispy-forms

如何渲染Django forms.ChoiceField作为Twitter Bootstrap下拉列表

使用django-bootstrap,django-bootstrap-form,django-bootstrap-toolkit,django之一渲染Django forms.ChoiceField作为Twitter Bootstrap下拉列表的最有效方式(在编程/维护工作方面,优雅方面)是什么? -crispy-forms等应用程序?在任何这些应用程序中是否明确支持此用例?

django django-forms twitter-bootstrap django-crispy-forms

27
推荐指数
1
解决办法
1万
查看次数

使用 Crispy Forms 时 Django 返回“TemplateDoesNotExist”

TemplateDoesNotExist将 Crispy Forms 与 Django 结合使用,只有在使用 Crispy Forms 的任何功能时才会出现错误。

由于我是 Crispy Forms 的新手(似乎普遍建议使用它来快速使表单看起来更好),因此我按照https://django-crispy-forms.readthedocs.io/en/latest/install.html中的说明进行操作据我所知,安装是正确的(使用安装pip并更改settings.py)。.venv我在 Windows 计算机上的虚拟环境(下面提到的文件夹)中运行它。

我什至专门创建了一个新项目来研究这个问题,内容绝对很少,但同样的问题仍然存在。该项目称为“stuff”,其中的单个应用程序称为“other”。

设置.py

...

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'crispy_forms',
    'other',
    'bootstrap4'
]

CRISPY_TEMPLATE_PACK = 'bootstrap4'

...
Run Code Online (Sandbox Code Playgroud)

模型.py

from django.db import models

class Mine(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField()
Run Code Online (Sandbox Code Playgroud)

表格.py

from django import forms
from .models import Mine

class MineForm(forms.ModelForm):
    class Meta:
        model = Mine
        fields = ('name','email')
Run Code Online (Sandbox Code Playgroud)

视图.py

from django.shortcuts …
Run Code Online (Sandbox Code Playgroud)

django django-crispy-forms bootstrap-4

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

使用Crispy形式与ModelForm

我一直在以脆弱的形式运行,它似乎完全符合我的要求:使用引导程序布局渲染表单.

现在,这个例子谈论使用forms.Form.这没关系,我可以通过编写如下代码来创建我的:

class TemplateCreateForm(forms.Form):
    title = forms.CharField(label=(u'Task name'))
    description = forms.CharField(label=(u'Task description'))
    url_start = forms.CharField(label=(u'Start page url'))
    url_end = forms.CharField(label=(u'Final page url'))

    def __init__(self, *args, **kwargs):
        self.helper = FormHelper()
        self.helper.form_method = 'post'
        self.helper.add_input(Submit('submit', 'Submit'))
        super(TemplateCreateForm, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

但是,如何进行更新?因为如果我把它放在视图中:

    form = TemplateCreateForm(request.POST or None, instance=template)
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为实例仅适用于ModelForm.

现在,我可以用forms.Formwith 替换ModelForm并使用Crispy形式的ModelForm吗?我这样做了

class TemplateCreateForm(ModelForm):
    title = forms.CharField(label=(u'Task name'))
    description = forms.CharField(label=(u'Task description'))
    url_start = forms.CharField(label=(u'Start page url'))
    url_end = forms.CharField(label=(u'Final page url'))

    def __init__(self, *args, **kwargs): …
Run Code Online (Sandbox Code Playgroud)

django django-models django-forms django-crispy-forms

20
推荐指数
1
解决办法
2万
查看次数

删除Django Crispy Forms中的标签

有没有人知道是否有正确的方法来清除香脆的标签?

我得到了这个:

self.fields['field'].label = ""
Run Code Online (Sandbox Code Playgroud)

但这不是一个很好的解决方案.

forms django label django-crispy-forms

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

以django-crispy-forms显示多个行和列

我在Twitter Bootstrap上使用django-crispy-forms,我在将表单自定义为多行和多列时遇到了一些问题.一个示例问题是当我尝试将表单拆分为两列时没有任何反应:

class SomeForm(ModelForm):

    helper = FormHelper()
    helper.layout = Layout(
        Column('field1', 'field3'),
        Column('field2', 'field4'),
        )
    )

    class Meta:
        model = Model
Run Code Online (Sandbox Code Playgroud)

查看html输出,我看到有<div class="formColumn">,但表单显示在一个列中.也许这是一个CSS问题?我正在使用Bootstrap 2.1.

django twitter-bootstrap django-crispy-forms

13
推荐指数
3
解决办法
1万
查看次数

django crispy forms:在表单中嵌套formset

我有一个django Formset,我想在另一个表单的中间进行布局.我正在使用django-crispy-forms在父表单中设置布局__init__:

from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit, Layout, Field, Div
def __init__(self, *args, **kwargs):
    self.helper = FormHelper()
    self.helper.layout = Layout(
        Div(
            Div(Field('foo'), css_class='span3'),
            Div(Field('bar'), css_class='span4'),
            css_class='row'
            ),
        Field('baz', css_class='span1'),
            ...
            )
    self.helper.add_input(Submit('submit', 'Submit', css_class='btn btn-primary offset4'))
Run Code Online (Sandbox Code Playgroud)

我的模板只是使用{% crispy %}标记呈现表单.

我想知道如何合并formset.我应该在上面的init函数中实例化它吗?我怎么在那里引用它?

还有其他一些在线形式和formset组合的例子,其中一个是连续渲染的,但是我想知道我是否可以更好地控制它们如何与crispy的布局结合在一起.

django django-forms django-crispy-forms

13
推荐指数
3
解决办法
6597
查看次数

TemplateDoesNotExist 位于 /users/register/bootstrap5/uni_form.html

我正在为我的 django 项目构建一个注册表单,并且为了设计它,我使用了脆脆的表单。但是,当我运行服务器并转到注册页面时,我看到以下错误:

    Internal Server Error: /users/register/
Traceback (most recent call last):
  File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\backends\django.py", line 61, in render
    return self.template.render(context)
  File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 170, in render
    return self._render(context)
  File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 162, in _render
    return self.nodelist.render(context)
  File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 938, in render
    bit = node.render_annotated(context)
  File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 905, in render_annotated
    return self.render(context)
  File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 162, in _render
    return self.nodelist.render(context)
  File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", line 938, in render
    bit = node.render_annotated(context)
  File "C:\Users\Dell\Desktop\Django\microblog\venv\lib\site-packages\django\template\base.py", …
Run Code Online (Sandbox Code Playgroud)

python django django-crispy-forms

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

Django脆皮形式分裂场布局

我们有一个脆弱的形式,我们希望能够在表单HTML模板的不同部分呈现不同的字段,但是我们在Crispy文档中找不到这样做的方法.下面是一些稍微简化的代码,用于说明我们要做的事情:

forms.py

helper = FormHelper()
helper.layout_1 = Layout(
    Div(
        Field('field_1a'),
        Field('field_1b')
    )
)
helper.layout_2 = Layout(
    Div(
        Field('field_2a'),
        Field('field_2b')
    )
)
Run Code Online (Sandbox Code Playgroud)

template.html

<body>
    {% crispy form layout_1 %}
    <!-- A big bunch of other html -->
    {% crispy form layout_2 %}
</body>
Run Code Online (Sandbox Code Playgroud)

有谁知道实现这一目标的干净方法?


到目前为止我们已经看过的方法必须排除:

  • 我们可以在HTML中手动添加字段,而不是为我们提供crispy渲染.但是,这看起来是不可取的,因为我们有许多choice字段,其选项以编程方式确定.
  • 我们可以编写一个令人毛骨悚然的布局,它使用一个crispy.forms.layout.HTML对象来包含HTML,它将我们布局的两个不同部分分开.但是,有很多HTML,如果我们将它直接嵌入到python中,将很难维护.
  • 我们可以编写一个自定义布局对象来为我们这样做,但是我们预测这将是非常复杂的,并且想要将此视为最后的手段.
  • 我们可以不使用crispy,而是寻找方法以外的方法实现这一点,但是然后我们将失去与我们的应用程序中的所有其他形式的一致性.

python django layout django-forms django-crispy-forms

12
推荐指数
1
解决办法
5511
查看次数

ImportError:没有名为bootstrap3的模块

我安装了bootstrap3

$ pip install django-bootstrap3
Run Code Online (Sandbox Code Playgroud)

它正在安装在此目录中

/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/
Run Code Online (Sandbox Code Playgroud)

Django似乎在看这个目录

/Users/shawnpike/anaconda/lib/python2.7/site-packages/django/
Run Code Online (Sandbox Code Playgroud)

当我在INSTALLED_APPS =('bootstrap3')变量中放入'bootstrap3'然后运行

$ python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/shawnpike/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/Users/shawnpike/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
    django.setup()
  File "/Users/shawnpike/anaconda/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
apps.populate(settings.INSTALLED_APPS)
  File "/Users/shawnpike/anaconda/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/Users/shawnpike/anaconda/lib/python2.7/site-packages/django/apps/config.py", line 87, in create
    module = import_module(entry)
  File "/Users/shawnpike/anaconda/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named bootstrap3
Run Code Online (Sandbox Code Playgroud)

我使用复制和粘贴在django文件夹中安装了bootstrap3,但这不起作用.任何帮助将不胜感激. …

django django-crispy-forms

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

Django 1.8和Django Crispy Forms:有一种简单易用的方法来实现日期选择器吗?

那里有很多日期/日期时间选择器实现.是否有任何与Django和Crispy Forms集成的特别好,它们是如何使用的?

我希望尽量减少开发工作,最大限度地提高简单性,并利用Django本地化.

日期字段的Django/Crispy标准输出:

<input class="dateinput form-control" id="id_birth_date" name="birth_date" type="text" value="21/07/2015">
Run Code Online (Sandbox Code Playgroud)

在模型中:

birth_date = models.DateField(verbose_name='D.O.B', auto_now_add=False, auto_now=False)
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑:

档案型号:

from django.db import models

class Profile(models.Model):
    birth_date = models.DateField(verbose_name='D.O.B', auto_now_add=False, auto_now=False)
Run Code Online (Sandbox Code Playgroud)

个人资料表格:

from django import forms
from profiles.models import Profile


class ProfileForm(forms.ModelForm):
    class Meta:
        model = Profile
        birth_date = forms.DateField(
            widget=forms.TextInput(
                attrs={'type': 'date'}
            )
        )
Run Code Online (Sandbox Code Playgroud)

档案查看:

from django.shortcuts import get_object_or_404
from django.contrib.auth import get_user_model
from profiles.models import Profile
from profiles.forms import ProfileForm

User = get_user_model()

def edit(request):
    profile = get_object_or_404(Profile, …
Run Code Online (Sandbox Code Playgroud)

django datetime date datepicker django-crispy-forms

11
推荐指数
1
解决办法
8048
查看次数