【问题标题】:Django: reverse function fails with an exceptionDjango:反向函数失败并出现异常
【发布时间】:2009-07-15 06:42:02
【问题描述】:

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

import() 参数 1 必须是字符串,而不是实例方法

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

投票视图是:(我已将其简化为只有出现错误的行)

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

当我从项目的 urls.py 中删除管理 url 时,即使其变为:

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

它有效。

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

【问题讨论】:

    标签: python django admin reverse


    【解决方案1】:

    在过去的几个版本中,您包含管理 URL 的方式已经改变了几次。很可能您对已安装的 Django 版本使用了错误的说明。

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

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

    【讨论】:

    • 天才! :) 我所要做的就是将 urlspattern 中管理 url 的包含更改为:(r'^admin/(.*)', admin.site.root),而不是:(r'^admin/(.* )',包括(admin.site.root)),谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2021-03-04
    • 1970-01-01
    相关资源
    最近更新 更多