Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 有没有一种方法可以将类或id添加到CreateView中使用UserCreationForm生成的表单中_Django_Django Class Based Views_Modelform_Django 2.1 - Fatal编程技术网

Django 有没有一种方法可以将类或id添加到CreateView中使用UserCreationForm生成的表单中

Django 有没有一种方法可以将类或id添加到CreateView中使用UserCreationForm生成的表单中,django,django-class-based-views,modelform,django-2.1,Django,Django Class Based Views,Modelform,Django 2.1,尽管苦苦挣扎了几个小时,我还是无法引导使用UserCreationForm创建的django表单。我想将引导类添加到标记中,但由于我对基于django类的视图知之甚少,因此无法找到解决方法 url.py urlpatterns = [ path('signup/', views.SignUp.as_view(), name='signup'), path('', include('django.contrib.auth.urls')), ] views.py class Sig

尽管苦苦挣扎了几个小时,我还是无法引导使用UserCreationForm创建的django表单。我想将引导类添加到标记中,但由于我对基于django类的视图知之甚少,因此无法找到解决方法

url.py

urlpatterns = [
    path('signup/', views.SignUp.as_view(), name='signup'),
    path('', include('django.contrib.auth.urls')),
]
views.py

class SignUp(CreateView):
    form_class = CustomUserCreationForm
    success_url = reverse_lazy('accounts:login')
    template_name = 'accounts/signup.html'
class SignUp(CreateView):
    form_class = CustomUserCreationForm
    success_url = reverse_lazy('accounts:login')
    template_name = 'accounts/register.html'
forms.py

class CustomUserCreationForm(UserCreationForm):
    class Meta:
        fields = ('first_name', 'last_name', 'email', 'age', 'height', 'avatar', 'password1', 'password2')
        model = get_user_model()

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['password2'].label = "Confirm Password"
class CustomUserCreationForm(UserCreationForm):
    class Meta:
        fields = ('first_name', 'last_name', 'email', 'age', 'height', 'avatar', 'password1', 'password2')
        model = get_user_model()
    first_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'First Name',
                                                                'class': 'form-control',
                                                                }))
    last_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Last Name',
                                                                'class': 'form-control',
                                                                }))
    email = forms.CharField(widget=forms.EmailInput(attrs={'placeholder': 'Email',
                                                                'class': 'form-control mb-4',
                                                                }))
    age = forms.IntegerField(widget=forms.NumberInput(attrs={'placeholder': 'Age',
                                                                'class': 'form-control',
                                                                }))
    height = forms.IntegerField(widget=forms.NumberInput(attrs={'placeholder': 'Height(cm)',
                                                                'class': 'form-control',
                                                                }))
    avatar = forms.ImageField(widget=forms.FileInput(attrs={'placeholder': 'Avatar',
                                                                'class': 'form-control  mb-4',
                                                                }))
    password1 = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Password',
                                                                'class': 'form-control mb-4',
                                                                }))
    password2 = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Confirm Password',
                                                                'class': 'form-control mb-4',
                                                                }))

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['password2'].label = "Confirm Password"
电流输出

输出我想要的 请看一下这个

以及在模板中呈现字段时,例如 {%bootstrap_field form.myfield form_group_class='custom-class-name'%}


您可以像这样添加自定义类。当你检查的时候,它会在你的HTML中显示为一个类,这样你就可以在CSS中使用它了。所以,我发布了一个我自己问题的答案,这样寻找同样东西的人就可以在一个地方找到解决方案。我一直在寻找的是

forms.py

class CustomUserCreationForm(UserCreationForm):
    class Meta:
        fields = ('first_name', 'last_name', 'email', 'age', 'height', 'avatar', 'password1', 'password2')
        model = get_user_model()

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['password2'].label = "Confirm Password"
class CustomUserCreationForm(UserCreationForm):
    class Meta:
        fields = ('first_name', 'last_name', 'email', 'age', 'height', 'avatar', 'password1', 'password2')
        model = get_user_model()
    first_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'First Name',
                                                                'class': 'form-control',
                                                                }))
    last_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Last Name',
                                                                'class': 'form-control',
                                                                }))
    email = forms.CharField(widget=forms.EmailInput(attrs={'placeholder': 'Email',
                                                                'class': 'form-control mb-4',
                                                                }))
    age = forms.IntegerField(widget=forms.NumberInput(attrs={'placeholder': 'Age',
                                                                'class': 'form-control',
                                                                }))
    height = forms.IntegerField(widget=forms.NumberInput(attrs={'placeholder': 'Height(cm)',
                                                                'class': 'form-control',
                                                                }))
    avatar = forms.ImageField(widget=forms.FileInput(attrs={'placeholder': 'Avatar',
                                                                'class': 'form-control  mb-4',
                                                                }))
    password1 = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Password',
                                                                'class': 'form-control mb-4',
                                                                }))
    password2 = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Confirm Password',
                                                                'class': 'form-control mb-4',
                                                                }))

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['password2'].label = "Confirm Password"
views.py

class SignUp(CreateView):
    form_class = CustomUserCreationForm
    success_url = reverse_lazy('accounts:login')
    template_name = 'accounts/signup.html'
class SignUp(CreateView):
    form_class = CustomUserCreationForm
    success_url = reverse_lazy('accounts:login')
    template_name = 'accounts/register.html'
accounts/register.html

{% extends 'base.html' %}

{% block title %}
    SignUp
{% endblock title %}

{% block content %}
    <div style="margin: 75px 0px 0px 0px; background: rgb(87,77,255);
background: linear-gradient(276deg, rgba(87,77,255,0.8830882694874825) 24%, rgba(7,96,255,0.5385504543614321) 77%);" class="bg_cover">
        <form class="text-center col-md-5" method="POST" enctype="multipart/form-data">
            <p class="h4 mb-4">SignUp</p>
            {% csrf_token %}
            <div class="form-row mb-4">
                <div class="col">
                    {{ form.first_name }}
                </div>
                <div class="col">
                    {{ form.last_name }}
                </div>
            </div>
            {{ form.email }}
            <div class="form-row mb-4">
                <div class="col">
                    {{ form.age }}
                </div>
                <div class="col">
                    {{ form.height }}
                </div>
            </div>
            {{ form.avatar }}
            {{ form.password1 }}
            {{ form.password2 }}
            <button class="btn-block btn btn-primary my-4" type="submit">Sign up</button>
        </form>
    </div>
{% endblock content %}
您可以像我在CustomUserCreationForm类中所做的那样,将UserCreationFrom子类化,然后只需将所需的属性Bootstrap类名、id等添加到要修改的表单字段中。说到在SignUp视图中编写的accounts/register.html,我明确地告诉django在哪里可以找到模板。在模板中,您可以通过{{form.as_p}呈现整个表单,或者像我在模板中那样呈现单个字段


希望我的回答能帮你从头痛中解脱出来,我是通过这个来找到的

我建议你看看Django脆饼。一个很好的定制django表单呈现的包。它有特定的工具来使用引导类呈现表单。