문제

하나의 템플릿에 완전히 다른 두 가지 형태가 있습니다. 한 관점에서 처리하는 방법? 어떤 양식이 제출되었는지 어떻게 구별 할 수 있습니까? Prefix를 사용하여 어떻게 그것을 압류 할 수 있습니까? 아니면 별도의 견해를 작성하는 것이 낫습니까?

문안 인사
크리스

도움이 되었습니까?

해결책

개인적으로, 나는 하나의보기를 사용하여 각 양식의 게시물을 처리합니다.

반면에 사용 된 양식을 나타내는 숨겨진 입력 요소를 사용할 수 있습니다.

<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:
    ...

두 형태가 완전히 다르면 두 가지 다른 견해로 처리하는 것은 확실히 아프지 않을 것입니다. 그렇지 않으면 '숨겨진 입력 요소'트릭을 사용할 수 있습니다. Zacherates 다루었 다. 또는 항상 각각을 줄 수 있습니다 submit 요소 a 독특한 이름과 그 양식에 따라 어떤 양식을 제출했는지에 따라 차별화됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top