首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django错误表单提交

Django错误表单提交
EN

Stack Overflow用户
提问于 2013-03-13 17:57:42
回答 2查看 106关注 0票数 1

我有一个应用程序,可以让你创建个人资料。我的应用程序的一个功能是让你编辑你的名字并上传一张图片。

问题是,用户不能提交图像,除非他输入他的name.How,我可以修复这个页面,这样如果用户提交了图像,但没有提交姓名,就可以这样做了。他将仍然使用他的旧名字,或者如果他不提交图像并更改自己的名字。他还会留着他的老照片吗?

我尝试添加blank=True,null = False,null = True,但似乎没有效果

我的models.py

代码语言:javascript
复制
class Person(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=100,null=True,blank=False)
    image = models.FileField(upload_to="images/")

    def __unicode__(self):
        return self.name

我的forms.py

代码语言:javascript
复制
 class PersonForm(forms.ModelForm):
    class Meta:
        model = Person
        fields = ('image','name',)

我的views.py

代码语言:javascript
复制
def Display(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect(reverse('world:LoginRequest'))

    if request.method == 'POST':
        form = PersonForm(request.POST, request.FILES)
        if form.is_valid():
            person = Person.objects.get(user=request.user)
            person.image = form.cleaned_data['image']
            person.name = form.cleaned_data['name']
            person.save() 
    return render(request,'edit.html',{'form': PersonForm()})

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-13 18:29:25

代码语言:javascript
复制
class Person(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=100, blank=True)
    image = models.FileField(upload_to="images/", blank=True)

    def __unicode__(self):
        return self.name

def Display(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect(reverse('world:LoginRequest'))

    if request.method == 'POST':
        form = PersonForm(request.POST, request.FILES)
        if form.is_valid():
            image = form.cleaned_data['image']
            name = form.cleaned_data['name']

            person = Person.objects.get(user=request.user)

            if image:
                person.image = form.cleaned_data['image']
            if name:
                person.name = form.cleaned_data['name']

            person.save() 
    return render(request,'edit.html',{'form': PersonForm()})
票数 2
EN

Stack Overflow用户

发布于 2013-03-13 18:28:24

django forms对用户数据进行验证

验证在两个级别上完成:

  1. 字段级别:

代码语言:javascript
复制
- if the field is required and the user didn't enter any data it will raise an error
- if the user entered improperly formatted data for that field it will raise an error
- you can override the behavior of field validation by implementing functions named as `clean_fieldname` 
- this type of validation results in `form.field.errors`

  1. the form level:

代码语言:javascript
复制
- checks for any (non-field specific) validation errors
- you can override the behavior by implementing `clean` method 
- this type of validation results in `form.non_field_errors`

从你的模型中:

图像不允许为空,这意味着它是必需的。不输入图像将引发错误

让名称和图像都使用blank=True

另外,我推荐使用form.save()而不是保存视图中的模型

还有一个用于保存图像的内置ImageField

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15381980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档