Django:如何在 bootstrap 模板上手动呈现表单的每个字段?
Django: How to manually render each field of a form on a bootstrap template?
我在网上找到了这个不错的 bootstrap 模板,我想将它用作更新用户个人资料的模板,我尝试了在这里和 youtube 中找到的几种方法,但是我仍然无法让它工作。不仅表单没有呈现,而且当我单击更新时更新的配置文件也没有被保存。有人可以帮我解决问题吗?如果我没有理解,我会提前道歉,因为英语是我的第二语言。
这是我对个人资料更新的看法,我没有为它创建一个表格,因为我在网上看到我不需要为它创建一个表格来工作,只需要模型。
class TutorProfileUpdateView(UpdateView):
model = User
fields = ['first_name', 'last_name', 'email', 'phone number', 'current_address',
'image', 'bio']
template_name = 'account/tutor_dashboard.html'
success_url = reverse_lazy('tutor-dashboard')
def form_valid(self, form):
fm = form.save(commit=False)
fm.user = self.request.user
fm.save()
messages.success(self.request, f'Profile Updated!')
return HttpResponseRedirect(self.get_success_url())
这是模板的一部分,我不会把它全部贴在这里,因为它太长了。
<form method="POST">
{% csrf_token%}
<div class="card h-100">
<div class="card-body">
<div class="row gutters">
<div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12">
<h6 class="mb-2 text-primary">Personal Details</h6>
</div>
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12">
<div class="form-group">
{{ form.first_name }}
<label for="{{ form.first_name.id_for_label }}">First Name</label>
<input type="text" class="form-control" id="{{ form.first_name.id_for_label }}" placeholder="{{ user.first_name }}">
</div>
您可以遍历表单字段并手动呈现每个标签和输入(或 select 等)。
{% for field in form %}
<div class="Your boorstrap classes">
{{ field.errors }}
{{ field.label_tag }} {{ field }}
{% if field.help_text %}
<p class="help">{{ field.help_text|safe }}</p>
{% endif %}
</div>
{% endfor %}
有关详细信息,您可以在此处查看文档:https://docs.djangoproject.com/en/3.2/topics/forms/#looping-over-the-form-s-fields
我在网上找到了这个不错的 bootstrap 模板,我想将它用作更新用户个人资料的模板,我尝试了在这里和 youtube 中找到的几种方法,但是我仍然无法让它工作。不仅表单没有呈现,而且当我单击更新时更新的配置文件也没有被保存。有人可以帮我解决问题吗?如果我没有理解,我会提前道歉,因为英语是我的第二语言。
这是我对个人资料更新的看法,我没有为它创建一个表格,因为我在网上看到我不需要为它创建一个表格来工作,只需要模型。
class TutorProfileUpdateView(UpdateView):
model = User
fields = ['first_name', 'last_name', 'email', 'phone number', 'current_address',
'image', 'bio']
template_name = 'account/tutor_dashboard.html'
success_url = reverse_lazy('tutor-dashboard')
def form_valid(self, form):
fm = form.save(commit=False)
fm.user = self.request.user
fm.save()
messages.success(self.request, f'Profile Updated!')
return HttpResponseRedirect(self.get_success_url())
这是模板的一部分,我不会把它全部贴在这里,因为它太长了。
<form method="POST">
{% csrf_token%}
<div class="card h-100">
<div class="card-body">
<div class="row gutters">
<div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12">
<h6 class="mb-2 text-primary">Personal Details</h6>
</div>
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12">
<div class="form-group">
{{ form.first_name }}
<label for="{{ form.first_name.id_for_label }}">First Name</label>
<input type="text" class="form-control" id="{{ form.first_name.id_for_label }}" placeholder="{{ user.first_name }}">
</div>
您可以遍历表单字段并手动呈现每个标签和输入(或 select 等)。
{% for field in form %}
<div class="Your boorstrap classes">
{{ field.errors }}
{{ field.label_tag }} {{ field }}
{% if field.help_text %}
<p class="help">{{ field.help_text|safe }}</p>
{% endif %}
</div>
{% endfor %}
有关详细信息,您可以在此处查看文档:https://docs.djangoproject.com/en/3.2/topics/forms/#looping-over-the-form-s-fields