2

アイテムに関する基本的な情報だけを持つフォームからのデータを検証するビューがあります。これis_validを読んだ後でも、ここでメソッド がどのように機能するかについて混乱しています。ユーザーが名前や画像 1 などの必須フィールドの一部を入力しない場合、ページに「このフィールドは必須です」またはそのようなエラーが表示されるようにします。が返された場合、これらのメッセージはユーザーのページに自動的に表示されると思いました。または、ユーザーに表示する各フィールドのエラー メッセージを指定する必要がありますか?form.is_validFalse

    #view
            def sell(request):
                if request.method == "POST":
                    form = AddItem(request.POST, request.FILES)
                    if form.is_valid():
                        item = form.save(commit=False)
                        item.user = request.user
                        item.is_active = True
                        item.slug = slugify(item.name)
                        item.save()
                        return HttpResponseRedirect('thanks.html')  
                else:
                    form = AddItem()
                    return render_to_response('forsale.html', locals(), context_instance=RequestContext(request))

    #form    
        class AddItem(forms.ModelForm):
            name = forms.CharField(label="Title")


            class Meta:
                model = Item
                exclude = ('user','slug','is_active',)

#model

class Item(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=75)
    slug = models.SlugField(max_length=50, unique=True)
    is_active = models.BooleanField(default=True, blank=True)
    image1 =  models.ImageField(upload_to='img')
    image2 =  models.ImageField(upload_to='img', blank=True)
    image3 =  models.ImageField(upload_to='img', blank=True)
    image_caption1 = models.CharField(max_length=200, blank=True)
    image_caption2 = models.CharField(max_length=200, blank=True)
    image_caption3 = models.CharField(max_length=200, blank=True)
    price = models.DecimalField(max_digits=8, decimal_places=2)
    quantity = models.IntegerField(default=1)
    description = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
    shipping_price = models.DecimalField(decimal_places=2, max_digits=6)
    categories = models.ManyToManyField(Category)
4

1 に答える 1

3

を使用してフォームオブジェクトからエラーを抽出し、必要に応じてform.errorsdictを処理する必要があります。ajax を使用している場合は、dict を json として送り返し、javascript を使用して処理します。直接の html フォーム送信の場合は、渡された辞書のエラーを含むページをレンダリングして応答し、渡されたエラーをテンプレートで処理する必要があります (通常は{% if errors %}タグを使用して)。

于 2012-08-18T20:42:44.240 に答える