为什么我的姜戈形式不"valid"?无法获取更新数据库的 POST 请求



我正在尝试为Django应用程序中的用户创建用户配置文件。我把表格显示在我想要的地方,当我试图提交时,什么都没发生。我在view.py中的form.is_valid后面放了一个打印声明,发现它不是"有效的",但我不知道为什么。我尝试了几种不同的方法来"清理"/"验证"数据,但我无法通过表单的"无效">

如有任何帮助,我们将不胜感激!

urls:

path('userinfo/', views.user_info, name='userinfo')

表单模板:

{% extends "base.html" %}
{% load bootstrap4 %}
{% block content %}
<div class="container">
<h1>Enter User Info</h1>
<form method="POST" class="form">
{% csrf_token %}
{% bootstrap_form form %}
<input type="submit" class="btn btn-primary" value="Create Profile">
</form>
</div>
{% endblock %}

视图:

def user_info(request):
form = ProfileForm()
if request.method == 'POST':
form = ProfileForm(request.POST)
if form.is_valid():
form.save()
else:
form = ProfileForm()
return render(request, 'miraDashboard/form.html', context={'form': form})

型号:

from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
name = models.CharField("Full Name", max_length=1024)
job_role = models.CharField("Role", max_length=254, default="Seeking Job Opportunities")
zip_code = models.CharField("Zip Code", max_length=5)
user_image = models.ImageField("Upload Profile Picture", upload_to='images/')
def __str__(self):
return f'{self.user.username} Profile'

形式:

from django.forms import ModelForm
from .models import Profile
class ProfileForm(ModelForm):
class Meta:
model = Profile
fields = ['name','job_role','zip_code', 'user_image']

如果您想查看表单更改中的错误,else-statmant:

def user_info(request):
form = ProfileForm()
if request.method == 'POST':
form = ProfileForm(request.POST)
if form.is_valid():
form.save()
else:
print(form.errors.as_data()) # here you print errors to terminal

return render(request, 'miraDashboard/form.html', context={'form': form})

在form.is_valid((之后,您不需要再次设置它(else语句中的form=ProfileForm(((。这样你的表格就会出现错误(你可以在表格中看到错误(。

最新更新