【问题标题】:Voting with django voting用 django 投票
【发布时间】:2012-07-25 13:53:26
【问题描述】:

我在使用 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。有人成功投了票吗?如果是这样,我做错了什么?提前感谢您的帮助。

【问题讨论】:

    标签: django django-models django-urls django-voting


    【解决方案1】:

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

    您在表单中的网址应该是'/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/')
    

    看看效果如何

    【讨论】:

    • 将我的帖子更改为您的建议。感谢您指出,但是,它并没有解决我的问题。当我尝试发布投票时,我仍然收到 404。
    • 尝试在 shell 中执行它并确保您的正则表达式的工作 - 我清理了我的响应(格式已关闭)以向您展示如何从 shell 测试 url 路由
    猜你喜欢
    • 2012-10-29
    • 2012-07-14
    • 2023-02-09
    • 2011-02-19
    • 2019-06-07
    • 2022-12-17
    • 2019-04-03
    • 1970-01-01
    • 2011-04-21
    相关资源
    最近更新 更多