我在这里看了几个答案,但我不能让它发挥作用。我正在尝试创建一个模型表单,将保存用户的配置文件后,他已在网站上注册。问题是,当我试图呈现表单时,我得到的是一个空白页面,没有错误。任何帮助都将不胜感激。在
在模型.py在
class Perfil(models.Model):
user = models.OneToOneField(User)
Sexo = models.CharField(max_length=100)
Direccion = models.CharField(max_length=100)
CP = models.CharField(max_length=100)
Ciudad = models.CharField(max_length=100)
Estado = models.CharField(max_length=100)
Pais = models.CharField(max_length=100)
Telefono = models.CharField(max_length=100)
Celular = models.CharField(max_length=100)
PaisPasaporte = models.CharField(max_length=100)
NumeroPasaporte = models.CharField(max_length=100)
VigenciaPasaporte = models.DateField(max_length=100)
ContactoEmergencia = models.CharField(max_length=100)
TelefonoEmergencia = models.CharField(max_length=100)
CorreoEmergencia = models.CharField(max_length=100)
Alergias = models.CharField(max_length=500)
在表单.py在
^{pr2}$在视图.py在
@verified_email_required()
def profile(request):
if request.method == "POST":
form = ProfileForm(request.POST)
if form.is_valid():
perfil = form.save(commit=False)
perfil.user = request.user
perfil.save()
return HttpResponseRedirect("/profile/")
else:
return render(request, "explore/profile.html", {"form": form})
return render(request, "explore/profile.html")
最后是我的html
<form class="profile" id="profile_form" method="post" action="" style="width: 50%;">
{% csrf_token %}
{% for field in form %}
<table>
<colgroup>
<col style="width: 45%;">
<col style="width: 10%;">
<col style="width: 45%;">
</colgroup>
<tr>
<td>{{ field.label_tag }}</td>
<td></td>
<td>{{ field }}</td>
</tr>
</table>
{% endfor %}
</form>
谢谢!在
当请求类型为
POST
时,您只在上下文中发送表单。第一次加载页面时,默认情况下是一个GET
请求。所以这个问题这样的方法应该有效:
请注意,您根本不需要
else
子句—如果表单无效,它会自动在上下文中发送错误的表单,并且您的错误消息会显示得很好。在相关问题 更多 >
编程相关推荐