Django NoReverseMatch in reverse()调用

Django NoReverseMatch in reverse()调用,django,python-2.7,Django,Python 2.7,我又花了一个晚上在这上面。。。有人能帮忙吗 我正在尝试复制kickstart示例,该示例似乎是为Django的早期版本开发的(并且没有全面描述操作方法) 无论如何,我管理任务直到“将任务标记为完成”。然后我的问题开始了 很清楚,在我将“mark_done”添加到ItemAdmin类的list_display属性之前,一切都很好。然后它似乎无法解决trc.todo.views.mark_done 我尝试了完整的、绝对的模块参考,以及您在下面看到的部分模块参考,但都没有成功。 我更喜欢局部的(以“t

我又花了一个晚上在这上面。。。有人能帮忙吗

我正在尝试复制kickstart示例,该示例似乎是为Django的早期版本开发的(并且没有全面描述操作方法)

无论如何,我管理任务直到“将任务标记为完成”。然后我的问题开始了

很清楚,在我将“mark_done”添加到ItemAdmin类的list_display属性之前,一切都很好。然后它似乎无法解决trc.todo.views.mark_done 我尝试了完整的、绝对的模块参考,以及您在下面看到的部分模块参考,但都没有成功。 我更喜欢局部的(以“todo”开头),因为它意味着易于移植到其他项目

谢谢你的帮助

我有一个文件树,如下所示:

truc/ (my project)
|-todo/ (my app)
| |-__init__.py
| |-views.py
| |-urls.py  (module urls)
| |-models.py
| |-templates/admin/todo/item/change_list.html
|-truc/
| |-urls.py  (main urls)
| |-settings.py
| |-etc.
我的主要URL包含: 我的模块URL包含: 在models.py中,我有: 来自django.db导入模型的

从django.contrib.auth.models导入用户
从django.contrib导入管理
从django.utils.translation导入ugettext作为_
从django.utils.encoding导入强制_文本
从django.http导入Http404、HttpResponse、HttpResponseRedirect
从django.core.urlResolver反向导入
[...]
类别项(models.Model):
name=models.CharField(最大长度=60)
created=models.ForeignKey(DateTime)
优先级=models.IntegerField(默认值=0)
难度=models.IntegerField(默认值=0)
done=models.BooleanField(默认值=False)
def标记_完成(自身):
###下面是我不能工作的一行。。。
返回“%reverse”(“todo.views.mark_done”,args=[self.pk])
mark_done.allow_tags=True
类ItemAdmin(admin.ModelAdmin):
列表显示=[“名称”、“优先级”、“难度”、“已创建”、“标记完成”、“完成”]
搜索_字段=[“名称”]
[...]
错误和回溯:
NoReverseMatch at/admin/todo/item/
与“todo.views.mark_done”相反,未找到参数“(5,)”和关键字参数“{}”。
请求方法:获取
请求URL:http://127.0.0.1:8000/admin/todo/item/
Django版本:1.5
异常类型:NoReverseMatch
异常值:
与“todo.views.mark_done”相反,未找到参数“(5,)”和关键字参数“{}”。
异常位置:/Library/Python/2.7/site-packages/django/core/urlresolvers.py in_reverse_,带_前缀,第416行
Python可执行文件:/usr/bin/Python
Python版本:2.7.1
[...]
模板错误:
在template/Users/arnaud/Documents/trc/todo/templates/admin/todo/item/change_list.html中,第92行出现错误
与“todo.views.mark_done”相反,未找到参数“(5,)”和关键字参数“{}”。
82:{%endif%}
83:{%endblock%}
84 : 
85:{%csrf_令牌%}
86:{%if cl.formset%}
87:{{cl.formset.management_form}
88:{%endif%}
89 : 
90:{%block result_list%}
91:{%if action\表单和actions\在\u top和cl.full\结果\u count%}{%admin\u actions%}{%endif%}
92:{%result_list cl%}
93:{%if动作表单和动作在底部和cl.full结果上的动作数%}{%admin动作%}{%endif%}
94:{%endblock%}
95:{%block分页%}{%pagination cl%}{%endblock%}
96 :       
97 :     
98 :   
99:{%endblock%}
100 : 
回溯:
get_响应中的文件“/Library/Python/2.7/site packages/django/core/handlers/base.py”
140response=response.render()
render中的文件“/Library/Python/2.7/site packages/django/template/response.py”
105self.content=自渲染内容
呈现内容中的文件“/Library/Python/2.7/site packages/django/template/response.py”
82content=template.render(上下文)
render中的文件“/Library/Python/2.7/site packages/django/template/base.py”
140返回self.\u呈现(上下文)
文件“/Library/Python/2.7/site packages/django/template/base.py”在_render中
134返回self.nodelist.render(上下文)
render中的文件“/Library/Python/2.7/site packages/django/template/base.py”
830bit=self.render_节点(节点,上下文)
render_节点中的文件“/Library/Python/2.7/site packages/django/template/debug.py”
74返回node.render(上下文)
render中的文件“/Library/Python/2.7/site packages/django/template/loader_tags.py”
124返回编译的\u父对象。\u呈现(上下文)
文件“/Library/Python/2.7/site packages/django/template/base.py”在_render中
134返回self.nodelist.render(上下文)
render中的文件“/Library/Python/2.7/site packages/django/template/base.py”
830bit=self.render_节点(节点,上下文)
render_节点中的文件“/Library/Python/2.7/site packages/django/template/debug.py”
74返回node.render(上下文)
render中的文件“/Library/Python/2.7/site packages/django/template/loader_tags.py”
124返回编译的\u父对象。\u呈现(上下文)
文件“/Library/Python/2.7/site packages/django/template/base.py”在_render中
134返回self.nodelist.render(上下文)
render中的文件“/Library/Python/2.7/site packages/django/template/base.py”
830bit=self.render_节点(节点,上下文)
render_节点中的文件“/Library/Python/2.7/site packages/django/template/debug.py”
74返回node.render(上下文)
render中的文件“/Library/Python/2.7/site packages/django/template/loader_tags.py”
63结果=block.nodelist.render(上下文)
render中的文件“/Library/Python/2.7/site packages/django/template/base.py”
830bit=self.render_节点(节点,上下文)
render_节点中的文件“/Library/Python/2.7/site packages/django/template/debug.py”
74返回node.render(上下文)
render中的文件“/Library/Python/2.7/site packages/django/template/loader_tags.py”
63结果=block.nodelist.render(上下文)
render中的文件“/Library/Python/2.7/site packages/django/template/base.py”
830bit=self.render_节点(节点,上下文)
文件“/库/Pyt
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^todo/$', include('todo.urls')),
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    url(r'^admin/', include(admin.site.urls)),
)
from django.conf.urls import patterns, include, url

urlpatterns = patterns('todo.views',
    url(r'^mark_done/(\d*)/$', 'mark_done'),
)
from django.db import models
from django.contrib.auth.models import User
from django.contrib import admin

from django.utils.translation import ugettext as _
from django.utils.encoding import force_text
from django.http import Http404, HttpResponse, HttpResponseRedirect
from django.core.urlresolvers import reverse

[...]
class Item(models.Model):
    name = models.CharField(max_length=60)
    created = models.ForeignKey(DateTime)
    priority = models.IntegerField(default=0)
    difficulty = models.IntegerField(default=0)
    done = models.BooleanField(default=False)

    def mark_done(self):
### The below is THE line which I cannot have work...
        return "<a href='%s'>Done</a>" % reverse("todo.views.mark_done", args=[self.pk])
    mark_done.allow_tags = True

class ItemAdmin(admin.ModelAdmin):
    list_display = ["name", "priority", "difficulty", "created", "mark_done", "done"]
    search_fields = ["name"]
[...]
NoReverseMatch at /admin/todo/item/
Reverse for 'todo.views.mark_done' with arguments '(5,)' and keyword arguments '{}' not found.
Request Method: GET
Request URL:    http://127.0.0.1:8000/admin/todo/item/
Django Version: 1.5
Exception Type: NoReverseMatch
Exception Value:    
Reverse for 'todo.views.mark_done' with arguments '(5,)' and keyword arguments '{}' not found.
Exception Location: /Library/Python/2.7/site-packages/django/core/urlresolvers.py in _reverse_with_prefix, line 416
Python Executable:  /usr/bin/python
Python Version: 2.7.1

[...]
Template error:
In template /Users/arnaud/Documents/truc/todo/templates/admin/todo/item/change_list.html, error at line 92
   Reverse for 'todo.views.mark_done' with arguments '(5,)' and keyword arguments '{}' not found.
   82 :         {% endif %}


   83 :       {% endblock %}


   84 : 


   85 :       <form id="changelist-form" action="" method="post"{% if cl.formset.is_multipart %} enctype="multipart/form-data"{% endif %}>{% csrf_token %}


   86 :       {% if cl.formset %}


   87 :         <div>{{ cl.formset.management_form }}</div>


   88 :       {% endif %}


   89 : 


   90 :       {% block result_list %}


   91 :           {% if action_form and actions_on_top and cl.full_result_count %}{% admin_actions %}{% endif %}


   92 :            {% result_list cl %} 


   93 :           {% if action_form and actions_on_bottom and cl.full_result_count %}{% admin_actions %}{% endif %}


   94 :       {% endblock %}


   95 :       {% block pagination %}{% pagination cl %}{% endblock %}


   96 :       </form>


   97 :     </div>


   98 :   </div>


   99 : {% endblock %}


   100 : 

Traceback:
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response
  140.                     response = response.render()
File "/Library/Python/2.7/site-packages/django/template/response.py" in render
  105.             self.content = self.rendered_content
File "/Library/Python/2.7/site-packages/django/template/response.py" in rendered_content
  82.         content = template.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
  140.             return self._render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in _render
  134.         return self.nodelist.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
  830.                 bit = self.render_node(node, context)
File "/Library/Python/2.7/site-packages/django/template/debug.py" in render_node
  74.             return node.render(context)
File "/Library/Python/2.7/site-packages/django/template/loader_tags.py" in render
  124.         return compiled_parent._render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in _render
  134.         return self.nodelist.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
  830.                 bit = self.render_node(node, context)
File "/Library/Python/2.7/site-packages/django/template/debug.py" in render_node
  74.             return node.render(context)
File "/Library/Python/2.7/site-packages/django/template/loader_tags.py" in render
  124.         return compiled_parent._render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in _render
  134.         return self.nodelist.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
  830.                 bit = self.render_node(node, context)
File "/Library/Python/2.7/site-packages/django/template/debug.py" in render_node
  74.             return node.render(context)
File "/Library/Python/2.7/site-packages/django/template/loader_tags.py" in render
  63.             result = block.nodelist.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
  830.                 bit = self.render_node(node, context)
File "/Library/Python/2.7/site-packages/django/template/debug.py" in render_node
  74.             return node.render(context)
File "/Library/Python/2.7/site-packages/django/template/loader_tags.py" in render
  63.             result = block.nodelist.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
  830.                 bit = self.render_node(node, context)
File "/Library/Python/2.7/site-packages/django/template/debug.py" in render_node
  74.             return node.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
  1185.                     _dict = func(*resolved_args, **resolved_kwargs)
File "/Library/Python/2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in result_list
  286.             'results': list(results(cl))}
File "/Library/Python/2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in results
  264.             yield ResultList(None, items_for_result(cl, res, None))
File "/Library/Python/2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in __init__
  256.         super(ResultList, self).__init__(*items)
File "/Library/Python/2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in items_for_result
  184.             f, attr, value = lookup_field(field_name, result, cl.model_admin)
File "/Library/Python/2.7/site-packages/django/contrib/admin/util.py" in lookup_field
  258.                 value = attr()
File "/Users/arnaud/Documents/truc/todo/models.py" in mark_done
  76.         return "<a href='%s'>Done</a>" % reverse("todo.views.mark_done", args=[self.pk])
File "/Library/Python/2.7/site-packages/django/core/urlresolvers.py" in reverse
  496.     return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "/Library/Python/2.7/site-packages/django/core/urlresolvers.py" in _reverse_with_prefix
  416.                 "arguments '%s' not found." % (lookup_view_s, args, kwargs))

Exception Type: NoReverseMatch at /admin/todo/item/
Exception Value: Reverse for 'todo.views.mark_done' with arguments '(5,)' and keyword arguments '{}' not found.
candidate   u'/todo/mark_done/5/'
val 5
pattern 'todo/$mark_done/(\\d*)/$'
self    <RegexURLResolver 'truc.urls' (None:None) ^/>
args    (5,)
_prefix u'/'
m   'todo.views'
possibility [(u'todo/mark_done/%(_0)s/', [u'_0'])]
lookup_view_s   u'todo.views.mark_done'
possibilities   [([(u'todo/mark_done/%(_0)s/', [u'_0'])], 'todo/$mark_done/(\\d*)/$', {})]
lookup_view <function mark_done at 0x10da242a8>
prefix_norm u'/'
prefix_args []
params  [u'_0']
result  u'todo/mark_done/%(_0)s/'
defaults    {}
kwargs  {}
n   'mark_done'
unicode_args    [u'5']
url(r'^todo/$', include('todo.urls'))
urlpatterns = patterns('todo.views',
    url(r'^mark_done/(\d+)/$', 'mark_done', name='mark_done'),
)
urlpatterns = patterns('',
    (r'^todo/', include('todo.urls')),
    (r'^admin/doc/', include('django.contrib.admindocs.urls')),
    (r'^admin/', include(admin.site.urls)),
)
def mark_done(self):
    return "<a href='{0}'>Done</a>".format(reverse("mark_done", args=(self.pk,)))
mark_done.allow_tags = True