Django脆皮表格标签

Sar*_*rit 3 python forms django


我现在正在学习Django form。现在我专注于crispy form.

现在香脆,然后在我掌握form,我会移动到Django Admin formDjango admin model form

Django 1.10
Python 3.6.0

我正在关注这些教程:https:
//blog.bixly.com/awesome-forms-django-crispy-forms
http://django-crispy-forms.readthedocs.io/en/latest/layouts.html#
https:// /godjango.com/29-crispy-forms/

这是我的源代码:

views.py:

from django.views.generic import FormView
from apps.colors.forms import PersonDetailForm

class ColorStudyView(FormView):
    template_name = 'colors/study.html'
    form_class = PersonDetailForm
    success_url = '/'
Run Code Online (Sandbox Code Playgroud)

forms.py:

from crispy_forms.bootstrap import Tab, TabHolder
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit, Layout
from django import forms


class NoFormTagCrispyFormMixin(object):
    @property
    def helper(self):
        if not hasattr(self, '_helper'):
            self._helper = FormHelper()
            self._helper.form_tag = False
        return self._helper


class PersonDetailForm(forms.Form):
    name = forms.CharField(max_length=100)
    age = forms.IntegerField(required=False)
    address1 = forms.CharField(max_length=50, required=False)
    address2 = forms.CharField(max_length=50, required=False)
    city = forms.CharField(max_length=50, required=False)
    state = forms.CharField(max_length=50, required=False)

    mobile = forms.CharField(max_length=32, required=False)
    home = forms.CharField(max_length=32, required=False)
    office = forms.CharField(max_length=32, required=False)
    twitter = forms.CharField(max_length=100, required=False)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.layout = Layout(
            TabHolder(
                Tab('Information',
                    'name',
                    'age'
                    ),
                Tab('Address',
                    'address1',
                    'address2',
                    'city',
                    'state'
                ),
                Tab('Contact',
                    'mobile',
                    'home',
                    'office',
                    'twitter',
                )
            )
        )
        self.helper.layout.append(Submit('submit', 'Submit'))
Run Code Online (Sandbox Code Playgroud)

study.html:

{% load crispy_forms_tags %}


<!DOCTYPE html>
<html lang="en">
<head>
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" />
    <meta charset="UTF-8">
    <title>Study</title>
    <form action="" method="POST">
    {% crispy form %}
    </form>
</head>
<body>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

问题:
Tab 没有改变。
我错过了什么吗?
对不起,非常基本的问题,但这是我的第一天Django frontend

这是我的照片。TabAddressContact不工作。

在此处输入图片说明

更新: Zollie 解决了我的问题。这是我的study.html

{% load staticfiles %}
{% load crispy_forms_tags %}


<!DOCTYPE html>
<html lang="en">
<head>
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" />
    <meta charset="UTF-8">
    <title>Study</title>
    <form action="" method="POST">
    {% crispy form %}
    </form>
</head>
<body>
<script src="http://code.jquery.com/jquery-1.9.1.js">
</script>
<script src="http://code.jquery.com/ui/1.11.0/jquery-ui.js">
</script>
<script type="text/javascript" src="{% static 'bootstrap-tab.js' %}">  </script>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是我的文件系统配置

/Users/el/Code/siam-sbrand/static
(siam-sbrand) Sarits-MacBook-Air-2:static el$ ls
admin           django_extensions   img
bootstrap-tab.js    file.txt        js
dist            font            rest_framework
Run Code Online (Sandbox Code Playgroud)

Zol*_*lie 6

当我第一次想以脆脆的形式使用标签时,我遇到了同样的问题。不幸的是,这个包的文档非常薄弱。

关于为什么 TabHolder 和 Tabs 不起作用的答案是,因为您必须在 html 模板头中包含 jquery 和 javascript。此外,您必须下载 bootstrap-tab.js 并将其放在 bootstrap 子文件夹中的“静态”文件夹中,即,您还必须在 html 中包含它的路径。

因此,仅在 html 头中包含 Bootstrap 或 bootstrap.css 是不够的。下面是一个示例:

  <head>
<script src="http://code.jquery.com/jquery-1.9.1.js">
</script>
<script src="http://code.jquery.com/ui/1.11.0/jquery-ui.js">
</script>
<script type="text/javascript" src="{% static 'bootstrap/js/bootstrap-tab.js' %}">  </script>
Run Code Online (Sandbox Code Playgroud)