0

我正在尝试在我的项目中实现Django Reddit Style Voting 。过去几天我一直在搜索互联网,试图拼凑如何实现它,但不清楚如何设置我的 urlconf 来处理confirm_vote.html,以及该文件的内容可能是什么?我点击投票时遇到的错误是:

Generic vote view must be called with either post_vote_redirect, a 
"next" parameter in the request, or the object being voted on must 
define a get_absolute_url method or property.

这与这部分 Django-Votings' Code相对应。我的项目设置几乎与 Github 页面上列出的示例项目相同。

我意识到我需要设置一个confirm_vote.html 页面,并进行了大量搜索以了解如何设置urlconf 来处理它。我找到了This Blog Post,但它似乎没有回答我的问题。

谁能帮我弄清楚在 confirm_vote.html 和 url 正则表达式中添加什么来处理它?感谢您的帮助!

编辑


实际上刚刚意识到confirm_vote.html 的urlconf 在示例教程中。

(r'^links/(?P<object_id>\d+)/(?P<direction>up|down|clear)vote/?$',
    vote_on_object, dict(model=Link, template_object_name='link',
        template_name='kb/link_confirm_vote.html',
        allow_xmlhttprequest=True)),

但仍然对感谢任何想法AttributeError的内容和内容感到困惑!confirm_vote.html.

编辑:link_list.html


url(r'^links/?$', object_list, dict(queryset=Link.objects.all(),
    template_object_name='link', template_name='links/link_list.html',
    paginate_by=15, allow_empty=True)),



{% for link in link_list %}<tr class="{% cycle odd,even %}">
<td class="vote">

  {% dict_entry_for_item link from vote_dict as vote %}
  {% dict_entry_for_item link from score_dict as score %}

  <form class="linkvote" id="linkup{{ link.id }}" action="/links/{{ link.id }}/{% if vote and vote.is_upvote %}clear{% else %}up{% endif %}vote/" method="POST">
    <input type="image" id="linkuparrow{{ link.id }}" src="{{ MEDIA_URL }}img/aup{% if vote and vote.is_upvote %}mod{% else %}grey{% endif %}.png">
    {% csrf_token %}
  </form>

  <form class="linkvote" id="linkdown{{ link.id }}" action="/links/{{ link.id }}/{% if vote and vote.is_downvote %}clear{% else %}down{% endif %}vote/" method="POST">
    <input type="image" id="linkdownarrow{{ link.id }}" src="{{ MEDIA_URL }}img/adown{% if vote and vote.is_downvote %}mod{% else %}grey{% endif %}.png">
    {% csrf_token %}
  </form>

</td>
4

1 回答 1

0

看起来您没有传递访问视图?next=http://example.com/return_to_this_page_after_vote/的 URL(不是 urls.py)vote_on_object。请检查您的模板或在此处发布。

供参考: 相反,您可以在重新发明轮子之前使用django-ratings 。它易于使用和实施。


编辑

尝试这个:

<form class="linkvote" id="linkup{{ link.id }}" action="/links/{{ link.id }}/{% if vote and vote.is_upvote %}clear{% else %}up{% endif %}vote/?next=/" method="POST">
    <input type="image" id="linkuparrow{{ link.id }}" src="{{ MEDIA_URL }}img/aup{% if vote and vote.is_upvote %}mod{% else %}grey{% endif %}.png">
    {% csrf_token %}
  </form>

  <form class="linkvote" id="linkdown{{ link.id }}" action="/links/{{ link.id }}/{% if vote and vote.is_downvote %}clear{% else %}down{% endif %}vote/?next=/" method="POST">
    <input type="image" id="linkdownarrow{{ link.id }}" src="{{ MEDIA_URL }}img/adown{% if vote and vote.is_downvote %}mod{% else %}grey{% endif %}.png">
    {% csrf_token %}
  </form>

我只添加?next=/到动作的末尾。我不确定它是否会起作用 - 但请试一试。

于 2012-10-17T05:23:22.027 回答