質問

私は1つのテンプレートで2つの完全に異なる形式を持っています。 1つのビューでそれらを処理する方法?どのように私は、提出されたフォームのどの区別することができますか?どのように私はそれをacomplishする接頭辞を使用することができますか?それとも、それは別の意見を書く方が良いでしょう?

よろしく
chriss

役に立ちましたか?

解決

個人的に、私は、各フォームのPOSTを処理するために、1つのビューを使用すると思います。

一方、フォームが使用されたかを示す非表示の入力要素を使用することができます。

<form action="/blog/" method="POST">
    {{ blog_form.as_p }}
    <input type="hidden" name="form-type" value"blog-form" /> <!-- set type -->
    <input type="submit" value="Submit" />
</form>

... 

<form action="/blog/" method="POST">
    {{ micro_form.as_p }}
    <input type="hidden" name="form-type" value"micro-form" /> <!-- set type -->
    <input type="submit" value="Submit" />
</form>

のように表示してます:

def blog(request):
    if request.method == 'POST':
        if request.POST['form-type'] == u"blog-form":   # test the form type
            form = BlogForm(request.POST) 
            ...
        else:
            form = MicroForm(request.POST)
            ...

    return render_to_response('blog.html', {
        'blog_form': BlogForm(),
        'micro_form': MicroForm(),
    })

...しかし、再び、私は、フォームごとにビューが(ビューのみの投稿を受け付けていても)上記をやろうとしているよりも簡単だと思います。

他のヒント

ayazが言っ

のように、あなたが送信ボタンを形成するために、一意の名前を与える必要があります。

<form action="." method="post">
......
<input type="submit" name="form1">
</form>


<form action="." method="post">
......
<input type="submit" name="form2">
</form>


#view

if "form1" in request.POST:
    ...
if "form2" in request.POST:
    ...
二つの形式が完全に異なっている場合は、

、それは確かに彼らは2つの異なるビューによって処理される持って傷つけることはありません。そうしないと、あなたは触れています。のzacherates の「隠された入力要素」トリックを使用することができます。それとも、あなたは常に各submit要素にある[ユニークの名を与え、そしてフォームがそれに基づいて提出されたビューで区別できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top