簡體   English   中英

Django評論從發布/預覽重定向

[英]Django comments redirect from posted/preview

我正在實施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錯誤,有什么想法嗎?

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

謝謝

我不明白為什么需要您的comment_posted視圖。 相反,我認為您應該修復下一個字段:

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

在此,僅當設置了“下一個”上下文變量時才輸出“下一個”隱藏輸入。 您應該瞄准的是:

  • 如果可能,將下一個設為{{next}}
  • 后退評論對象的絕對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}}所在的位置都可用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM