Django - NoReverseMatch at

时间:2014-10-07 07:20:09

标签: django django-forms django-templates

我正在尝试同步两个Django项目,并发现自己出现以下错误:

  

反向找不到参数'()'和关键字参数'{}'的'file-add'。尝试了0种模式:[]

现在模板第15行似乎存在问题:

5   
6   
7   {% block content %}
8   
9   {% if form.non_field_errors %}
10  <div class="panel">
11    {{ form.non_field_errors }}
12  </div>
13  {% endif %}
14  
15  <form action="{% url 'file-add' %}" method="post" enctype="multipart/form-data">
16    <fieldset>
17      <legend>Add CV</legend>
18  
19      <div class="large-12 columns">
20        <div class="row" id="file_container">
21          {% if form.f.errors %}
22          <input placeholder="First name" name="f" type="file" id="file" class="error" />
23          {% else %}
24          <label for="f" name="CV" />
25          <input name="f" type="file" id="file" />

由于我不记得以任何方式更改此模板,并且所有文件应该与我的其他服务器上的文件相同,是否有任何小问题,我会丢失?

> <form action="{% url 'file-add' %}" method="post" enctype="multipart/form-data">

修改

这似乎与我的网址文件有关。我有一个主网址文件,它使用网址“/ jobs /”将任何内容转发到作业网址文件。

url(r'^jobs/', include('jobs.urls', namespace="jobs")),
url(r'^admin/', include(admin.site.urls)),
url(r'^admin_tools/', include('admin_tools.urls')),

作业网址文件然后指向相关的作业页面。

url(r'^new', views.importDemoData, name='importDemoData'),
url(r'^add', FileAddView.as_view(), name='file-add'),
url(r'^files/list', FileListView.as_view(), name='list'),

# This view lists uploaded files
url(r'^success', FileListView.as_view(), name='home'),
url(r'^(?P<unique_id>\w+)/$', views.application, name='application'),

如果我将“file-add”行移动到主urls文件中,它似乎可以工作......

4 个答案:

答案 0 :(得分:1)

我认为你应该添加URL名称的名称空间前面

答案 1 :(得分:0)

如果有人可以向我解释那会很棒......

我在主网址文件中从此行中删除了命名空间:

url(r'^jobs/', include('jobs.urls', namespace="jobs")),

将其更改为:

url(r'^jobs/', include('jobs.urls')),

它有效!这有点奇怪,因为它似乎在我的其他服务器上正常工作..

答案 2 :(得分:0)

正如他们在文档中所说:url-namespaces-and-included-urlconfs

  

包含的URLconf的URL名称空间可以用两种方式指定。

     

首先,在构造URL模式时,可以将应用程序和实例名称空间作为include()的参数提供。例如,:

     

url(r&#39; ^民意调查/&#39;,包含(&#39; polls.urls&#39;,名称空间=&#39; author-polls&#39;,app_name =&# 39;轮询&#39)),

     

这将包括polls.urls中定义的URL到应用程序命名空间&#39; polls&#39;,以及实例命名空间&#39; author-polls&#39;。

     

其次,您可以包含一个包含嵌入式命名空间数据的对象。如果包含()url()实例列表,则该对象中包含的URL将添加到全局命名空间。但是,您还可以包含()包含以下内容的3元组:

     

(<list of url() instances>, <application namespace>, <instance namespace>)

答案 3 :(得分:0)

您忘记在网址名称

之前添加命名空间

反向&#34;工作/添加&#34;将{%url&#39; jobs:file-add&#39; %}这是{%url&#39;命名空间:名称&#39;%}。

当您删除名称空间时,它会起作用,因为&#39; jobs / add&#39;网址将与{%url&#39; file-add&#39; %}