1

我在使用 django-voting 注册投票时遇到问题:https ://github.com/brosner/django-voting

我正在尝试从技术上对评论对象进行投票。从而增加它的分数。

这是我到目前为止所拥有的:

模板:

<form method="POST" action="/comments/{{ comment.id }}/up/vote/">
    {% csrf_token %}
    <button type="submit">Thumbs up!</button>
</form>

网址

widget_dict = {
    'model': Comment,
    'template_object_name': 'comment',
    'allow_xmlhttprequest': True,
    }


 #users can comment on event objects, And VOTE on comments
 urlpatterns = patterns('',
    url(r'^$', 'event.views.index'),
    url(r'^(?P<id>\d+)/$', 'event.views.detail'),
    url(r'^comments/(?P<object_id>\d+)/(?P<direction>up|down|clear)/vote/?$', vote_on_object, widget_dict),
)

有了这个,我被定向到 404。

文档给出了一个例子:

from django.conf.urls.defaults import *
from voting.views import vote_on_object
from shop.apps.products.models import Widget

widget_dict = {
    'model': Widget,
    'template_object_name': 'widget',
    'allow_xmlhttprequest': True,
}

urlpatterns = patterns('',
    (r'^widgets/(?P<object_id>\d+)/(?P<direction>up|down|clear)vote/?$', vote_on_object, widget_dict),
)

另外,我不能通过管理员添加投票? 无法添加投票

我不知道 widget_dict 实际上是什么。我只是想将表单发布到vote_on_object. 有人成功投了票吗?如果是这样,我做错了什么?提前感谢您的帮助。

4

1 回答 1

1

我认为你有一个错字,你忘记了一个'/'

您在表单中的 url 应该是'/widgets/{{ comment.id }}/up/vote/' 或者模式应该以comments

然后是模式,你忘记了一个斜线:

(?P<direction>up|down|clear)vote/?$

应该

(?P<direction>up|down|clear)/vote/?$

如果要检查路由,可以从 shell 执行

import re
re.match(r'^widgets/(?P<object_id>\d+)/(?P<direction>up|down|clear)/vote/?$', '/comment/1/up/vote/')

看看它的工作原理

于 2012-07-26T21:49:26.197 回答