【问题标题】:Django Unable to Find reverse() URLDjango 无法找到反向() URL
【发布时间】:2011-11-11 05:00:57
【问题描述】:

我有以下 URLConf 设置:

urlpatterns = patterns('myapp.views',
    url(r'^$', 'index', name="home"),
    url(r'^login$', 'login'),
)

到目前为止,在我看来,我有这个:

def index(request):
    """Displays paginated message views"""
    return HttpResponseRedirect(reverse("myapp.views.login"))

def login(request):
    """Displays login screen"""
    return render_to_response('myapp/login.html', {
            "title": "Login"
    })

当我尝试进入登录页面时出现问题。 Django 似乎无法找到我的 URL。

转到网址http://localhost:8000/login,我收到以下错误:

找不到页面 (404) 请求方式:GET请求 网址:http://localhost:8000/login 找不到“登录” 您看到此错误是因为您的 Django 中有 DEBUG = True 设置文件。将其更改为 False,Django 将显示 标准 404 页面。

好像我虽然使用反向功能根据我的 URLConf 找到 Django 自己推荐的 URL,但还是找不到自己的 URL!

有什么想法吗?

编辑: 我需要澄清一些事情:问题不在于 Django 无法找出正确的 URL,而是一旦加载了该 URL,Django 就无法找到与之关联的视图。

【问题讨论】:

  • 您的标题具有误导性。当您查看索引 (/) 时,您只会使用反向操作。仅供参考,这给了你什么?
  • 我对标题进行了一些修改,请阅读接近尾声的澄清帖子。

标签: django function login reverse


【解决方案1】:

您能像这样将名称属性添加到您的网址吗 url(r'^$', 'index', name="home"),

然后用这个名字调用reverse

例子

urlpatterns = 模式('', url(r'^archive/(\d{4})/$', 存档, name="full-archive"), url(r'^archive-summary/(\d{4})/$', 存档, {'summary': True}, "arch-summary"), )

从 django.core.urlresolvers 导入反向

定义我的视图(请求): return HttpResponseRedirect(reverse('arch-summary', args=[1945]))

【讨论】:

  • 问题不是 reverse 没有给出预期的 URL,而是当请求该 URL 时,我得到一个 Page Not Found 错误。
【解决方案2】:

事实证明,错误是由我在 settings.py 文件中更改 STATIC_URL 变量引起的。将其改回“/static/”使一切正常。

【讨论】:

    猜你喜欢
    • 2018-06-07
    • 2013-08-23
    • 2021-11-15
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 2017-08-03
    • 2015-01-07
    相关资源
    最近更新 更多