【问题标题】:Caught NoReverseMatch while rendering, but have matching URL name渲染时捕获 NoReverseMatch,但具有匹配的 URL 名称
【发布时间】:2013-12-27 04:22:51
【问题描述】:

正如标题所暗示的,我遇到了 NoReverseMatch 错误,但我的 url.py 有相应的命名 url。我很自信我错过了一些简单的东西,但作为新手我似乎找不到自己的问题。


错误:(在下面的employee_edit.html 文件中生成)

渲染时捕获 NoReverseMatch:“employee_new”的反向 未找到参数“()”和关键字参数“{}”。

\home\username\mysite\myapp\views.py:

class v_EmployeeCreate(CreateView):
    model = Employee
    template_name = 'employee/employee_edit.html'

    def get_success_url(self):
        return reverse('employee_list')

\home\username\mysite\url.py:

from myapp.views import v_EmployeeCreate, v_EmployeeList 
urlpatterns = patterns('',
< ... snip ...>
url(r'^newEmployee$', v_EmployeeCreate.as_view(), name="employee_new"),
)

\home\username\mysite\myapp\templates\employee\employee_edit.html(第 7 行):
&lt;form action="{% url 'employee_new' %}" method="POST"&gt;


我觉得存在文件路径问题,但我不确定如何解决。命名的 URL 可以让我访问模板,但是模板本身无法生成 url。

到目前为止,为了文档,我有:

  1. 重新加载 django
  2. 检查拼写
  3. 确认非模板功能(没有模板标签的相同设置很好。页面加载)

从教程开始:http://effectivedjango.com/tutorial/views.html#creating-contacts

【问题讨论】:

    标签: python django url error-handling


    【解决方案1】:

    我认为您使用的是旧版本的 Django - 1.5 之前的版本(当前是 1.6)。线索是您的错误消息在视图名称周围有 两个 单引号:在那些旧版本中,您不应该在 url 标记中的名称周围加上引号。

    你应该(最好)升级 Django,或者(如果你真的不能这样做)使用{% url employee_new %}

    【讨论】:

    • /facedesk 就是这样。我正在使用 PythonAnywhere 来学习,所以只是假设他们将使用最新的或者可能是 -1 版本。我什至没有想过要寻找早于 1.5 的文档。
    猜你喜欢
    • 1970-01-01
    • 2014-10-14
    • 2011-07-06
    • 2012-10-14
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    相关资源
    最近更新 更多