Python 为什么我的Django表格不是;“有效”吗;?Can';无法获取更新数据库的POST请求

Python 为什么我的Django表格不是;“有效”吗;?Can';无法获取更新数据库的POST请求,python,django,django-models,django-views,django-forms,Python,Django,Django Models,Django Views,Django Forms,我正在尝试为Django应用程序中的用户创建用户配置文件。我的表单显示了我想要的位置,当我尝试提交时,什么都没有发生。 我在form.is_valid in my view.py之后放了一条print语句,发现它不“有效”,但我不知道为什么。 我尝试了几种不同的方法来“清理”/“验证”数据,但我无法通过“无效”表单 任何帮助都将不胜感激 网址: 表单模板: {% extends "base.html" %} {% load bootstrap4 %} {% block c

我正在尝试为Django应用程序中的用户创建用户配置文件。我的表单显示了我想要的位置,当我尝试提交时,什么都没有发生。 我在form.is_valid in my view.py之后放了一条print语句,发现它不“有效”,但我不知道为什么。 我尝试了几种不同的方法来“清理”/“验证”数据,但我无法通过“无效”表单

任何帮助都将不胜感激

网址:

表单模板:

{% 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 %}
型号:

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'
表格:


如果要查看表单更改中的错误,请执行以下操作:

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()。这样,您的表单将出现错误(您可以在form.errors中看到这些错误)。

您是否可以尝试用Create Profile替换?我尝试了此操作,但未做任何更改。尝试将“enctype=”multipart/form data“添加到表单中,如:我尝试了此操作并得到:{'user_image':[ValidationError(['this field is required.]])}…这有助于缩小我需要查看的范围!我将尝试找出原因。非常感谢!如果不想上载img,只需将模型字段用户\u image更改为:models.ImageField(“上载配置文件图片”,上载到='images/',blank=True,null=True)我需要配置文件的图像。我想我的form.html文件需要调整,以便在我点击“创建配置文件”时知道将图像发送到何处。仍在思考这个问题。
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']
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})