Django:HttpResponseRedirect的NoReverseMatch

时间:2011-09-27 14:32:37

标签: django

我正在尝试重新定位到帖子的页面,因为它已保存,好了它已保存,但重定向不起作用,它在开发服务器上运行得很好..而不是在生产服务器中。

我试过了:

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

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

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

  

TemplateSyntaxError异常值:同时捕获NoReverseMatch   渲染:使用参数反转'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%}等网址标记仍然返回错误..

2 个答案:

答案 0 :(得分:1)

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

请尝试args=[profile.id]

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

答案 1 :(得分:1)

我认为您最好的选择是使用已命名的网址,因为这听起来像是您的观点的Python路径问题。

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

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