【问题标题】:Django : NoReverseMatch for HttpResponseRedirectDjango:用于 HttpResponseRedirect 的 NoReverseMatch
【发布时间】:2011-11-26 02:51:36
【问题描述】:

我正在尝试在帖子保存后立即重定向到该帖子的页面,它已保存但重定向不起作用,它在开发服务器上工作得非常好......而不是在生产服务器上。

我试过了:

            return HttpResponseRedirect(reverse('emr.main.views.viewprofile', args=(profile.id,)))

它工作正常,但是在生产主机中我必须将 emr.main.view.viewprofile 更改为 myproject.main.views.viewprofile !因为视图配置文件本身不起作用

然后我得到模板语法错误:

TemplateSyntaxError 异常值:Caught NoReverseMatch while 渲染:带有参数的“main.views.add_record”反转 未找到“(47L,)”和关键字参数“{}”。

main.view.add_comment 是一个 url 标签 添加记录

如何解决这个问题?

url.py

    (r'^add/record/(?P<patient_id>\d+)/?$', add_record),
(r'^add/current/(?P<patient_id>\d+)/?$', add_current),

编辑:

主要问题是:

  1. 为 APP/views 命名需要重命名所有文件以修复此问题以进行开发,而不是将 emr.main.views.add_records 改为 myproject.main.views.. 因为函数本身不起作用
  2. 诸如 {% url main.views.add_record profile.id %} 之类的 URL 标记仍然返回错误..

【问题讨论】:

    标签: django


    【解决方案1】:

    您将一个元组传递给reverse(),而该函数需要一个列表。

    改用args=[profile.id]

    但是,如果没有看到 viewprofile() 函数的函数定义(或至少是签名),就很难正确回答这个问题。

    【讨论】:

    • 这解决了这个问题,但停留在命名函数:(
    【解决方案2】:

    我认为你最好的选择是使用命名的 url,因为这听起来像你的视图的 Python 路径问题。

    https://docs.djangoproject.com/en/1.3/topics/http/urls/#url

    如果您发布 urls.py 配置也会很有帮助。

    【讨论】:

    • 好吧,我发布了相关网址的 url.py
    • 你能给我一个例子,如何命名 url 将解决这个问题,我相信这是一个 python 路径问题,因为它在开发服务器上工作正常......
    • 好吧,您说在您的生产服务器上,“emr.main.view.viewprofile”不起作用,但是当您将其更改为“myproject.main.views.viewprofile”时,它确实起作用了。因此,在服务器上,您的根路径似乎是“myproject”。遗憾的是你没有给出整个 urls.py,所以我看不到你使用了哪个函数。请发布您的整个 urls.py 模式,以及 settings.py 中的 ROOT_URLCONF 设置
    • 已修复,结果我错过了 url.py 只能与 emr 一起工作。谢谢您的帮助,致以最诚挚的问候
    猜你喜欢
    • 2018-11-15
    • 2011-08-14
    • 2014-02-21
    • 2010-10-28
    • 2012-01-06
    • 1970-01-01
    • 2014-02-21
    • 2015-07-03
    • 2014-02-10
    相关资源
    最近更新 更多