【问题标题】:django forms.py widgets cannot render in template (UpdateView)django forms.py 小部件无法在模板中呈现(UpdateView)
【发布时间】:2022-01-05 01:44:28
【问题描述】:

我遇到了一个问题,forms.py 中的小部件无法在模板中呈现。 我想在我的应用程序中创建编辑表单,并尝试在 forms.py 中使用小部件,但小部件无法在模板中呈现。 有什么解决办法吗?

html 中的表单呈现如下(类、占位符等不呈现): IMAGE FORM EDIT

forms.py

class UserUsulanUpdatePenelitianForm(ModelForm):
class Meta:
    model           = UserUsulan
    exclude         = ['status_usulan' ,'jumlah_dana_disetujui', 'keterangan_operator', 'com_reviewer_1', 'com_reviewer_2' ]
    widget = {
        'anggota'                   : Select2MultipleWidget({'class' : 'form-control select2-multi', 'multiple' : 'multiple', 'name' : 'tags' }),
        'tmt_awal'                  : forms.TextInput({'class' : 'form-control',  'placeholder' : 'TMT Awal', 'type' : 'date'}),
        'tmt_akhir'                 : forms.TextInput({'class' : 'form-control',  'placeholder' : 'TMT Akhir', 'type' : 'date'}),
        'judul_penelitian'          : forms.Textarea({'class' : 'form-control', 'placeholder' : 'Judul Penelitian', 'rows':3, 'cols':20}),
    }

views.py

class UserUsulanPenelitianUpdateView(LoginRequiredMixin, UpdateView):
template_name       = 'dashboard/usulan-penelitian-edit.html'
form_class          = UserUsulanUpdatePenelitianForm
queryset            = UserUsulan.objects.all()
context_object_name = 'listUsulanPenelitian'

def form_valid(self, form):
    messages.success(self.request, 'Usulan Penelitian Telah Diedit!')
    return super().form_valid(form)

def get_success_url(self):
    return reverse('dashboard:usulan-penelitian')

usulan-penelitian-edit.html

<form method="post">
                {% csrf_token%}
                {{form.errors}}
                <div class="inputbox mt-3"> {{form.ketua}} <span>Ketua Penelitian</span> </div>
                <div class="row">
                    <div class="col-md-6">
                        <div class="inputbox mt-3 mr-2"> {{form.anggota}} <i class="fa fa-users"></i> <span>Anggota</span> </div>
                    </div>
                    <div class="col-md-6">
                        <div class="d-flex flex-row">
                            <div class="inputbox mt-3 mr-2"> {{form.tmt_awal}} <span>TMT Awal</span> </div>
                            <div class="inputbox mt-3 mr-2"> {{form.tmt_akhir}} <span>TMT Akhir</span> </div>
                        </div>
                    </div>
                </div>
                <div class="mt-4 mb-4">
                    <h6 class="text-uppercase">Detail Penelitian</h6>
                    <div class="row mt-3">
                      <div class="inputbox mt-3"> {{form.judul_penelitian}} <span>Judul Penelitian</span> </div>
                        <div class="col-md-4">
                            <div class="inputbox mt-3 mr-2"> {{form.tahun}} <span>Tahun</span> </div>
                        </div>
                        <div class="col-md-4">
                            <div class="inputbox mt-3 mr-2"> {{form.jenis_penelitian}} <span>Jenis</span> </div>
                        </div>
                        <div class="col-md-4">
                            <div class="inputbox mt-3 mr-2"> {{form.bidang_penelitian}} <span>Bidang</span> </div>
                        </div>
                    </div>
                    <div class="row mt-2">
                        <div class="col-md-6">
                            <div class="inputbox mt-3 mr-2"> {{form.skema_penelitian}} <span>Skema</span> </div>
                        </div>
                        <div class="col-md-6">
                            <div class="inputbox mt-3 mr-2"> {{form.target_luaran}} <span>Target</span> </div>
                        </div>
                    </div>
                    <div class="row mt-2">
                        <div class="col-md-12">
                            <div class="inputbox mt-3 mr-2"> {{form.tujuan_sosial_ekonomi}} <span>Tujuan Sosial Ekonomi</span> </div>
                        </div>
                    </div>
                </div>
                <div class="mt-4 mb-4">
                    <h6 class="text-uppercase">Dana Penelitian</h6>
                    <div class="row mt-3">
                        <div class="col-md-6">
                            <div class="inputbox mt-3 mr-2"> {{form.jumlah_dana_usulan}} <span>Dana Usulan</span> </div>
                        </div>
                    </div>
                </div>
                <input type="submit" name="simpan" id="simpan" class="btn btn-primary btn-user btn-block" value="Simpan"/>
            </form>

【问题讨论】:

    标签: django-views django-forms django-templates


    【解决方案1】:

    小部件无法呈现,因为编写代码小部件中的拼写错误。正确的代码是 widgets 而不是 widget

    之前

    widget = {
        'anggota'                   : Select2MultipleWidget({'class' : 'form-control select2-multi', 'multiple' : 'multiple', 'name' : 'tags' }),
        'tmt_awal'                  : forms.TextInput({'class' : 'form-control',  'placeholder' : 'TMT Awal', 'type' : 'date'}),
        'tmt_akhir'                 : forms.TextInput({'class' : 'form-control',  'placeholder' : 'TMT Akhir', 'type' : 'date'}),
        'judul_penelitian'          : forms.Textarea({'class' : 'form-control', 'placeholder' : 'Judul Penelitian', 'rows':3, 'cols':20}),
    }
    

    之后

    widgets = {
        'anggota'                   : Select2MultipleWidget({'class' : 'form-control select2-multi', 'multiple' : 'multiple', 'name' : 'tags' }),
        'tmt_awal'                  : forms.TextInput({'class' : 'form-control',  'placeholder' : 'TMT Awal', 'type' : 'date'}),
        'tmt_akhir'                 : forms.TextInput({'class' : 'form-control',  'placeholder' : 'TMT Akhir', 'type' : 'date'}),
        'judul_penelitian'          : forms.Textarea({'class' : 'form-control', 'placeholder' : 'Judul Penelitian', 'rows':3, 'cols':20}),
    }
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2016-12-06
    • 2016-09-18
    • 2018-11-09
    • 1970-01-01
    • 2021-02-14
    • 2021-09-30
    • 2019-04-06
    • 1970-01-01
    • 2019-10-27
    相关资源
    最近更新 更多