【问题标题】:Django NoReverseMatch atDjango NoReverseMatch 在
【发布时间】:2015-09-27 02:25:08
【问题描述】:

我有以下网址:

url(r'^%sdform/' %(URLPREFIX), pv.dform, name='dform'),

url(r'^%sform/(P?<growl>.*)/' %(URLPREFIX), pv.dform, name='dform'),

查看代码:

def dform(request, growl = None)是方法签名

重定向代码:

msg = 'test'
return redirect('dform', growl=msg)

知道为什么会出现这个错误吗?我正在使用正确的参数名称和所有这些将正确的参数发送到正确的视图方法。

编辑: 根据下面的答案,我尝试了:

url(r'^%sdform/(P?<growl>.*)/' %(URLPREFIX), pv.dform, name='dform_message')

并将重定向更改为:

return redirect('dform_message', growl='Updated Settings')

我仍然收到NoReverseMatch

【问题讨论】:

  • 什么是 URLPREFIX?这似乎不是构建 URL 模式的正确方法。
  • 为什么不呢?我正在通过 lighttpd 设置反向代理,所以应用程序可能位于 http://mydomain/djangoapp1http://mydomian2/djangoapp2 等等,所以我可以设置一个环境变量并通过 settings.py 读取它来设置“应用程序webapp 的上下文”。这有什么问题?
  • 您的网络服务器应该通过 SCRIPT_NAME 环境变量传递位置; Django 会自动读取并处理所有内容。你不需要做你正在做的事情。
  • 感谢您的提示,我在文档中没有看到。这不是我的经验,有没有这样的设置。
  • 完整的错误信息是什么?

标签: django


【解决方案1】:

我认为您的问题是您不应为不同的网址使用相同的名称(django docu)。

【讨论】:

  • 我改了名字,结果还是一样。
  • 名称不必是唯一的。事实上,当您为同一个视图有多个具有不同参数的模式时,我建议给它们起相同的名称。
猜你喜欢
  • 2016-07-20
  • 2017-04-18
  • 1970-01-01
  • 2014-02-10
  • 2017-05-21
  • 2020-08-03
相关资源
最近更新 更多