Django: reverse函数抛出异常

3 投票
1 回答
981 浏览
提问于 2025-04-15 12:55

我正在跟着Django的教程学习,但在教程的第4部分遇到了一个错误。我到了写vote视图的地方,这个视图使用reverse来跳转到另一个视图。结果,reverse出错了,报了一个这样的异常:

import() 的第一个参数必须是字符串,而不是实例方法

目前我项目中的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)),
)

而应用的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'),
)

然后是vote视图:(我把它简化成只有出错的那一行)

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

当我从项目的urls.py中去掉admin的url包含时,也就是变成:

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

这样就可以正常工作了。

我尝试了很多方法,但就是搞不懂我哪里出错了。

1 个回答

6

在过去的几个版本中,添加管理员网址的方法有过几次变化。你可能在使用与你安装的Django版本不匹配的说明。

如果你正在使用最新的开发版本,也就是还不是正式发布的版本,那么可以参考这个网址的文档:http://docs.djangoproject.com/en/dev/

但是,如果你使用的是1.0.2版本,那么应该按照页面顶部的链接去查看这个网址的文档:http://docs.djangoproject.com/en/1.0/

撰写回答