python - Django form.is_valid() 未验证

标签 python django django-forms

我似乎无法使用 .is_valid() 验证我的表单

关联的 View

def edit_social_media(request, user_id):

#verify a user is allowed to access the page

# user is saving the form
if request.POST:

form = SocialMediaForm(request.POST)
if form.is_valid():
 ...

  return HttpResponseRedirect(reverse(users.profile,
                                   args = (request.user.id,)))

# displaying the initial form
else:
   try:
     form = SocialMediaForm(instance = SocialMedia.objects.get(user = request.user))
   except SocialMedia.DoesNotExist:
     form = SocialMediaForm()


return render_to_response('users/edit_social_media.html', {'form': form, 'user' : user},
 context_instance = RequestContext(request))

表单.py

class SocialMediaForm(forms.ModelForm):
   class Meta:
      model = SocialMedia
      fields = {'twitter', 'facebook', 'linkedin'}

模板

<form method="post" action=''>
{% csrf_token %}
<div class="form-col-left">
    <p>
    {{ form.as_p }}
</p>
</div>


<div class="submitbutton">
<input type="submit" class="green button" value="Save Social Media Settings" />
</div>

</form>

模型

from django.db import models
from django.contrib.auth.models import User

class SocialMedia(models.Model):
    class Meta:
        app_label = 'dashboard'

  #the user associated with the data
  user = models.ForeignKey(User)

  #Twitter, Facebook, and Linkedin pages
  twitter = models.URLField("Twitter")
  facebook = models.URLField("Facebook")
  linkedin = models.URLField("Linkedin")

一些帮助将不胜感激。我对 django 相当陌生,所以我错过了一些较小的细微差别。我在 stackoverflow 上发现了一些与绑定(bind)表单和非绑定(bind)表单相关的类似问题,但通过阅读文档,我认为我正确地将数据绑定(bind)到表单。

最佳答案

由于这是一个 ModelForm,它将有助于查看该表单正在使用的实际模型,即 SocialMedia 类。另外,我不确定您所说的不验证​​是什么意思,但我假设 is_valid() 方法返回 False。

我的猜测是该方法返回 False,因为您没有在表单上设置用户。在 POST 字典中,您没有 user 或 user_id。在“if form.is_valid()”语句之前添加以下行:

form.instance.user = self.request.user

希望这能起作用。

关于python - Django form.is_valid() 未验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17537105/

相关文章:

django - 为数据迁移编写自动化测试

django - 如何修改默认的Django用户表

python - Django 中的错误设置模块

python - 如何以最直接的方式在全局范围内使用 matplotlib 中的任何系统字体?

python - Matplotlib:用不同颜色绘制大量断开的线段

python - Django Formset 不会按用户对象进行过滤

python - 如何用Python求解符号方程组?

python - factory_boy 对象似乎缺少主键

python - Django 模型保存

python - 在 Django 模型中存储电话号码的最佳方式是什么?