Django:反向函数失败,异常

时间:2009-07-15 06:42:03

标签: python django admin reverse

我正在关注Django教程并在本教程的第4部分遇到错误。我到了我正在编写投票视图的部分,该视图使用 reverse 重定向到另一个视图。出于某种原因,反向失败,出现以下异常:

  

import ()参数1必须是字符串,而不是instancemethod

目前我的项目的urls.py看起来像这样:

from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    (r'^polls/', include('mysite.polls.urls')),
(r'^admin/(.*)', include(admin.site.root)),
)

和app urls.py是:

from django.conf.urls.defaults import *

urlpatterns = patterns('mysite.polls.views',
     (r'^$', 'index'),
     (r'^(?P<poll_id>\d+)/$', 'details'),
     (r'^(?P<poll_id>\d+)/results/$', 'results'),
     (r'^(?P<poll_id>\d+)/vote/$', 'vote'),
)

投票视图是:(我已将其简化为仅包含错误的行)

def vote(request, poll_id):
    return HttpResponseRedirect(reverse('mysite.polls.views.results', args=(1,)))

当我从项目的urls.py中删除admin urls include时,即将其转换为:

urlpatterns = patterns('',
    (r'^polls/', include('mysite.polls.urls')),
#(r'^admin/(.*)', include(admin.site.root)),
)

它有效。

我尝试了很多东西,无法理解我做错了什么。

1 个答案:

答案 0 :(得分:6)

在最后几个版本中,您添加管理网址的方式已经改变了几次。您可能对所安装的Django版本使用了错误的说明。

如果您使用的是当前主干 - 即非官方发布 - 那么http://docs.djangoproject.com/en/dev/的文档是正确的。

但是,如果您使用的是1.0.2,那么您应该点击页面顶部的链接http://docs.djangoproject.com/en/1.0/