2012-04-02 39 views
0

即時通訊實施django評論應用程序。 當點擊帖子而不是帖子頁面時,重定向到當前頁面的最佳方式是什麼?Django評論重定向從張貼/預覽

我一直遵循這個指南:http://www.omh.cc/blog/2008/mar/9/free-comments-redirection/

我的形式看起來像:

{% load comments i18n %} 

<form action="{% comment_form_target %}" method="post">{% csrf_token %} 
    {% if next %}<div><input type="hidden" name="next" value="{{ next }}" /></div>{% endif %} 
     {% for field in form %} 
      {% if field.is_hidden %} 
       <div>{{ field }}</div> 
      {% else %} 
       {% if field.name != "email" and field.name != "url" %} 
        {% if field.errors %}{{ field.errors }}{% endif %} 
         <p 
          {% if field.errors %} class="error"{% endif %} 
          {% ifequal field.name "honeypot" %} style="display:none;"{% endifequal %}> 
          {{ field.label_tag }} {{ field }} 
         </p> 
       {% endif %} 
      {% endif %} 
     {% endfor %} 
    <p class="submit"><input type="submit" name="post" class="submit-post" value="{% trans "Post" %}" /></p> 
</form> 

我views.py看起來像:

def comment_posted(request): 
    if request.GET['c']: 
     comment_id, post_id = request.GET['c'].split(':') 
     post = Image.objects.get(pk=post_id) 
     if post: 
      return HttpResponseRedirect(post.get_absolute_url()) 
    return HttpResponseRedirect("/") 

我的urls.py的樣子:

urlpatterns = patterns('', 
    url(r'^other/', include('other.urls')), 
    url(r'^live/', include('live.urls')), 
    url(r'^photo/', include('photo.urls')), 
    url(r'^comments/posted/$', 'photo.views.comment_posted'), 
    url(r'^comments/', include('django.contrib.comments.urls')), 
    url(r'^search/', SearchView(template=None, searchqueryset=None, form_class=SearchForm), name='haystack_search'), 

回溯:

Environment: 


Request Method: GET 
Request URL: http://127.0.0.1:8000/comments/posted/?c=10 

Django Version: 1.3.1 
Python Version: 2.6.6 
Installed Applications: 
['django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'other', 
'live', 
'photo', 
'haystack', 
'django.contrib.flatpages', 
'django.contrib.comments', 
'django.contrib.admin', 
'django.contrib.admindocs'] 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware') 


Traceback: 
File "/export/mailgrp4_a/sc10jbr/lib/python/django/core/handlers/base.py" in get_response 
    111.       response = callback(request, *callback_args, **callback_kwargs) 
File "/home/cserv2_a/soc_ug/sc10jbr/WWWdev/dbe/photo/views.py" in comment_posted 
    17.   comment_id, post_id = request.GET['c'].split(':') 

Exception Type: ValueError at /comments/posted/ 
Exception Value: need more than 1 value to unpack 

我想我已經修改我的views.py不正確,任何想法?

我的應用程序被稱爲照片,我的模型被稱爲圖像。

謝謝

+0

完整跟蹤請回復 – jpic 2012-04-02 11:57:03

+0

我更新了原帖。謝謝 – 2012-04-02 11:58:30

+0

你從哪裏得到的? comment_id,post_id = request.GET ['c']。split(':') – jpic 2012-04-02 12:04:17

回答

1

我不明白爲什麼你需要你的comment_posted視圖。相反,我認爲你應該解決您的下一個領域:

{% if next %}<div><input type="hidden" name="next" value="{{ next }}" /></div>{% endif %} 

這裏,如果「下一個」情境變量設置「下的」隱藏輸入僅outputed。你的目標應該是:

  • 旁邊是{{接下來}}如果在評論對象的絕對URL可能
  • 後備

它可能看起來像:

<input type="hidden" name="next" value="{% if next %}{{ next }}{% else %}{{ form.target_object.get_absolute_url }}{% endif %}" /> 

這假設你的模型有一個正確定義的get_absolute_url方法。

注意,我通過閱讀想通約form.target_object:

  1. 的評論templatetag的代碼,我注意到實例化註釋形式與目標對象作爲第一個參數,

  2. 的我注意到的評論表的代碼將傳遞的目標對象存儲在target_object屬性中,使其在{{form}}的任何位置都可用

+0

我改變了這一行,它現在把我帶到一個空白頁面。我如何設置下一個? – 2012-04-02 12:08:13

+0

又是什麼?我更喜歡form.target_object而不是form.instance.content_object。 – jpic 2012-04-02 12:09:17

+0

你解決了嗎? – jpic 2012-04-02 13:31:41