2011-03-07 56 views
1

我在我的網站上的兩個地方使用Django評論框架。每次提交後,我希望用戶只需重定向到他們所在的原始頁面。Django:如何在評論表單中定義「Next」

如何定義「下一個」變量以便用戶重定向?

對重定向信息:​​

而且,這裏是我使用的形式。 comment.types不起作用,但我認爲我應該這樣做 - 爲每種評論類型定義兩個不同的下一個輸入(圖片與膳食)。

{% load comments i18n %} 
<form action="{% comment_form_target %}" method="post">{% csrf_token %} 
    {% if comment.type == '19' %} 
    <input type="hidden" name="next" value="{% url meal comment.object_pk %}" /> 
    {% endif %} 
    {% if comment.type == '23' %} 
    <input type="hidden" name="next" value="{% url picture comment.object_pk %}" /> 
    {% endif %} 
    <!-- <input type="hidden" name="next" value="{{ next }}" /> --> 
    {% for field in form %} 
    {% if field.is_hidden %} 
     {{ field }} 
    {% else %} 
     {% if field.errors %}{{ field.errors }}{% endif %} 
     <p 
     {% if field.errors %} class="error"{% endif %} 
     {% ifequal field.name "honeypot" %} style="display:none;"{% endifequal %} 
     {% ifequal field.name "name" %} style="display:none;"{% endifequal %} 
     {% ifequal field.name "email" %} style="display:none;"{% endifequal %} 
     {% ifequal field.name "url" %} style="display:none;"{% endifequal %} 
     {% ifequal field.name "title" %} style="display:none;"{% endifequal %}> 
     <!-- {{ field.label_tag }} -->{{ field }} 
     </p> 
    {% endif %} 
    {% endfor %} 
    <p class="submit"> 
     <button type="submit">Send</button> 
    <!-- <input type="submit" name="preview" class="submit-preview" value="{% trans "Preview" %}" /> --> 
    </p> 
</form> 

,然後在膳食&圖片的網頁,我有:

<h4>Post a Message</h4> 
{% render_comment_form for meal %} 

<h4>Post a Message</h4> 
{% render_comment_form for picture %} 
+0

'next'字段在這裏實際上做了什麼?你能解釋更多嗎? – tamizhgeek 2011-03-07 19:19:12

+0

在Django評論中,您可以定義下一個值,在評論提交後將重定向用戶。 http://docs.djangoproject.com/en/dev/ref/contrib/comments/#redirecting-after-the-comment-post – Emile 2011-03-07 19:43:51

回答

2

想通了。要在多個對象中使用下一個,請使用if語句。

{% if picture %} 
<input type="hidden" name="next" value="{% url picture picture.id %}" /> 
{% endif %} 
+1

您應該執行value =「{{form.target_object.get_absolute_url}}」,因爲它不依賴於模型類型,get_absolute_url是模型的標準方法。 – jpic 2012-04-02 13:36:33

0

如果你想留在同一個頁面Ajax是一種選擇,你可以使用類似django_ajaxcomments,在其他方式上有相當多的文章用ajax來做到這一點。

+0

不錯 - 確定試試看。謝謝! – Emile 2011-03-07 17:16:34