Python Django-一个酥脆的形状可以分成两列吗?

Python Django-一个酥脆的形状可以分成两列吗?,python,django,django-forms,django-templates,Python,Django,Django Forms,Django Templates,我尝试将一个布局简洁的表单拆分为两列,以消除滚动的需要,我尝试使用forms.py中的formhelper在一个DIV中放置两个问题,但这并没有改变任何事情。有人有什么想法吗 forms.py from crispy_forms.helper import FormHelper from crispy_forms.layout import Layout, Div, Field, Row, Submit, Button, Column class ProfileUpdateForm(forms

我尝试将一个布局简洁的表单拆分为两列,以消除滚动的需要,我尝试使用forms.py中的formhelper在一个DIV中放置两个问题,但这并没有改变任何事情。有人有什么想法吗

forms.py

from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Div, Field, Row, Submit, Button, Column

class ProfileUpdateForm(forms.ModelForm):
    address = forms.CharField()
    dob = forms.DateField(
        widget=forms.TextInput(
            attrs={'type': 'date'}
        ), label='Date of Birth'
    )
    def __init__(self, *args, **kwargs):
        self.helper = FormHelper()
        self.helper.layout = Layout(
            Div(
                Div(Field('fullname'), css_class='col-md-6',),
                Div(Field('dob'), css_class='col-md-6',),
                css_class='row',
            ),
            Div(
                Div(Field('address'), css_class='col-md-6',),
                Div(Field('city'), css_class='col-md-6',),
                css_class='row',
            ),
            Div(
                Div(Field('country'), css_class='col-md-6',),
                Div(Field('profilephoto'), css_class='col-md-6',),
                css_class='row',
            ),
        )
        super(ProfileUpdateForm, self).__init__(*args, **kwargs)
    class Meta:
        model = Profile
        fields = ['fullname', 'dob', 'address', 'city', 'country', 'profilephoto']
        labels = {
            'fullname': 'Full Name',
            'address': 'Address',
            'city': 'City',
            'country': 'Country',
            'profilephoto': 'Profile Photo',
        }
@login_required
def profile(request):
    if request.method == 'POST':
        u_form = UserUpdateForm(request.POST, instance=request.user)
        p_form = ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile)

        if u_form.is_valid and p_form.is_valid:
            u_form.save()
            p_form.save()
            messages.success(request, f'Your account has been successfully updated!')
            return redirect('profile')
    else:   
        u_form = UserUpdateForm(instance = request.user)
        p_form = ProfileUpdateForm(instance = request.user.profile)

    context = {
        'u_form': u_form,
        'p_form': p_form
    }
    return render(request, 'users/profile.html', context)
视图.py

from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Div, Field, Row, Submit, Button, Column

class ProfileUpdateForm(forms.ModelForm):
    address = forms.CharField()
    dob = forms.DateField(
        widget=forms.TextInput(
            attrs={'type': 'date'}
        ), label='Date of Birth'
    )
    def __init__(self, *args, **kwargs):
        self.helper = FormHelper()
        self.helper.layout = Layout(
            Div(
                Div(Field('fullname'), css_class='col-md-6',),
                Div(Field('dob'), css_class='col-md-6',),
                css_class='row',
            ),
            Div(
                Div(Field('address'), css_class='col-md-6',),
                Div(Field('city'), css_class='col-md-6',),
                css_class='row',
            ),
            Div(
                Div(Field('country'), css_class='col-md-6',),
                Div(Field('profilephoto'), css_class='col-md-6',),
                css_class='row',
            ),
        )
        super(ProfileUpdateForm, self).__init__(*args, **kwargs)
    class Meta:
        model = Profile
        fields = ['fullname', 'dob', 'address', 'city', 'country', 'profilephoto']
        labels = {
            'fullname': 'Full Name',
            'address': 'Address',
            'city': 'City',
            'country': 'Country',
            'profilephoto': 'Profile Photo',
        }
@login_required
def profile(request):
    if request.method == 'POST':
        u_form = UserUpdateForm(request.POST, instance=request.user)
        p_form = ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile)

        if u_form.is_valid and p_form.is_valid:
            u_form.save()
            p_form.save()
            messages.success(request, f'Your account has been successfully updated!')
            return redirect('profile')
    else:   
        u_form = UserUpdateForm(instance = request.user)
        p_form = ProfileUpdateForm(instance = request.user.profile)

    context = {
        'u_form': u_form,
        'p_form': p_form
    }
    return render(request, 'users/profile.html', context)
profile.html

{% load crispy_forms_tags %}

            <form method="POST" enctype="multipart/form-data">
                {% csrf_token %}
                {{ u_form|crispy }}

                {{ p_form|crispy }}

           </form>
{%load crispy_forms_tags%}
{%csrf_令牌%}
{{u|u形|脆}}
{{p|u形|脆}}
当前状态


EDIT在forms.py中添加了uuu init uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。根据设置,应在
\uuuu init\uuu
处添加formhelper。如果您不在模板中使用
{%crispy your_cool_form_name%}
,您的问题也可能存在于模板中

from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Div, Field, Row, Submit, Button, Column

class ProfileUpdateForm(forms.ModelForm):
    address = forms.CharField()
    dob = forms.DateField(
        widget=forms.TextInput(
            attrs={'type': 'date'}
        ), label='Date of Birth'
    )
    def __init__(self, *args, **kwargs):
        self.helper = FormHelper()
        self.helper.layout = Layout(
            Div(
                Div(Field('fullname'), css_class='col-md-6',),
                Div(Field('dob'), css_class='col-md-6',),
                css_class='row',
            ),
            Div(
                Div(Field('address'), css_class='col-md-6',),
                Div(Field('city'), css_class='col-md-6',),
                css_class='row',
            ),
            Div(
                Div(Field('country'), css_class='col-md-6',),
                Div(Field('profilephoto'), css_class='col-md-6',),
                css_class='row',
            ),
        )
        super(ProfileUpdateForm, self).__init__(*args, **kwargs)
    class Meta:
        model = Profile
        fields = ['fullname', 'dob', 'address', 'city', 'country', 'profilephoto']
        labels = {
            'fullname': 'Full Name',
            'address': 'Address',
            'city': 'City',
            'country': 'Country',
            'profilephoto': 'Profile Photo',
        }
@login_required
def profile(request):
    if request.method == 'POST':
        u_form = UserUpdateForm(request.POST, instance=request.user)
        p_form = ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile)

        if u_form.is_valid and p_form.is_valid:
            u_form.save()
            p_form.save()
            messages.success(request, f'Your account has been successfully updated!')
            return redirect('profile')
    else:   
        u_form = UserUpdateForm(instance = request.user)
        p_form = ProfileUpdateForm(instance = request.user.profile)

    context = {
        'u_form': u_form,
        'p_form': p_form
    }
    return render(request, 'users/profile.html', context)
你快到了。你真是太棒了

来自crispy_forms.layout导入字段的

[...]
Div(
Div(字段('fullname'),css_class='col-md-6',),
分区(字段('dob'),css_class='col-md-6',),
css_class='row',
),

因此,我在字段名之前添加了字段标记,但没有任何更改,我不确定如何执行init方法。请重新阅读。他们有两个
\uuuuu init\uuuuuu
示例。我更新了帖子,展示了我是如何做到的,但仍然没有做任何更改。在模板中使用标签
{%cirspy u\u form%}
代替过滤器
{u\u form}
,它是
{%crispy p\u form}
,但确实有效!非常感谢你!