Python 反向():';非类型';对象不可调用

Python 反向():';非类型';对象不可调用,python,django,Python,Django,我面临一个奇怪的问题,至少对于python/django noob来说,这很奇怪;) django.core.urlresolvers.reverse()当从mymodels.py调用时,“非类型”对象不可调用。当我从shell执行同一行时,它工作得很好 我完全不知道为什么会这样 外壳: $ from django.core.urlresolvers import reverse $ reverse('images:view', args=[1]) '/images/1/' 型号.py fro

我面临一个奇怪的问题,至少对于python/django noob来说,这很奇怪;)

django.core.urlresolvers.reverse()当从mymodels.py调用时,“非类型”对象不可调用。当我从shell执行同一行时,它工作得很好

我完全不知道为什么会这样

外壳:

$ from django.core.urlresolvers import reverse
$ reverse('images:view', args=[1])
'/images/1/'
型号.py

from django.db import models
from django.core.urlresolvers import reverse

class Image(models.Model):
    image = models.ImageField(upload_to='images')
    image_caption = models.CharField(max_length=80, verbose_name='Caption')

    uploaded_at = models.DateTimeField(auto_now_add=True, verbose_name='Date Uploaded')
    modified_at = models.DateTimeField(auto_now=True, verbose_name='Date Modified')

    def __str__(self):
        return self.image_caption

    def edit_image(self):
        return '<a href="%s">Edit</a>' % reverse('images:view', args=[self.id])

    edit_image.short_description = 'Edit Image'
    edit_image.allow_tags = True
我试图在图像名称空间中反转的url

url(r'^(?P<pk>\d+)/$', views.DetailView.as_view(), name='view'),
url(r'^(?P\d+/$),views.DetailView.as_view(),name='view'),
我试过什么

  • 用reverse_lazy()代替reverse()
  • kwargs代替arg
  • 还有一些我都不知道的事情P
回溯

Template error:
In template /home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/contrib/admin/templates/admin/change_list.html, error at line 91
   'NoneType' object is not callable
   81 :         {% endif %}
   82 :       {% endblock %}
   83 :
   84 :       <form id="changelist-form" action="" method="post"{% if cl.formset.is_multipart %} enctype="multipart/form-data"{% endif %}>{% csrf_token %}
   85 :       {% if cl.formset %}
   86 :         <div>{{ cl.formset.management_form }}</div>
   87 :       {% endif %}
   88 : 
   89 :       {% block result_list %}
   90 :           {% if action_form and actions_on_top and cl.full_result_count %}{% admin_actions %}{% endif %}
   91 :            {% result_list cl %} 
   92 :           {% if action_form and actions_on_bottom and cl.full_result_count %}{% admin_actions %}{% endif %}
   93 :       {% endblock %}
   94 :       {% block pagination %}{% pagination cl %}{% endblock %}
   95 :       </form>
   96 :     </div>
   97 :   </div>
   98 : {% endblock %}
   99 : 

Traceback:
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/core/handlers/base.py" in get_response
  139.                 response = response.render()
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/response.py" in render
  105.             self.content = self.rendered_content
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/response.py" in rendered_content
  82.         content = template.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in render
  140.             return self._render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in _render
  134.         return self.nodelist.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/debug.py" in render_node
  78.             return node.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/loader_tags.py" in render
  123.         return compiled_parent._render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in _render
  134.         return self.nodelist.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/debug.py" in render_node
  78.             return node.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/loader_tags.py" in render
  123.         return compiled_parent._render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in _render
  134.         return self.nodelist.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/debug.py" in render_node
  78.             return node.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/loader_tags.py" in render
  62.             result = block.nodelist.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/debug.py" in render_node
  78.             return node.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/loader_tags.py" in render
  62.             result = block.nodelist.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/debug.py" in render_node
  78.             return node.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in render
  1196.                     _dict = func(*resolved_args, **resolved_kwargs)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/contrib/admin/templatetags/admin_list.py" in result_list
  288.             'results': list(results(cl))}
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/contrib/admin/templatetags/admin_list.py" in results
  266.             yield ResultList(None, items_for_result(cl, res, None))
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/contrib/admin/templatetags/admin_list.py" in __init__
  258.         super(ResultList, self).__init__(*items)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/contrib/admin/templatetags/admin_list.py" in items_for_result
  185.             f, attr, value = lookup_field(field_name, result, cl.model_admin)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/contrib/admin/util.py" in lookup_field
  258.                 value = attr()
File "/home/ankit/Desktop/Python/Workspace/SnapShare/images/models.py" in edit_image
  30.         return '<a href="%s">Edit</a>' % reverse('images:view', args=[self.id])

Exception Type: TypeError at /admin/images/image/
Exception Value: 'NoneType' object is not callable
模板错误:
在template/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/contrib/admin/templates/admin/change_list.html中,第91行出现错误
“非类型”对象不可调用
81:{%endif%}
82:{%endblock%}
83 :
84:{%csrf_令牌%}
85:{%if cl.formset%}
86:{{cl.formset.management_form}
87:{%endif%}
88 : 
89:{%block result_list%}
90:{%if action形式和actions\u位于顶部和cl.full\u结果\u计数%}{%admin\u actions%}{%endif%}
91:{%result\u list cl%}
92:{%if action\表单和底部的actions\和cl.full\结果\u count%}{%admin\ actions%}{%endif%}
93:{%endblock%}
94:{%block分页%}{%pagination cl%}{%endblock%}
95 :       
96 :     
97 :   
98:{%endblock%}
99 : 
回溯:
get_响应中的文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/core/handlers/base.py”
139response=response.render()
render中的文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/response.py”
105self.content=自渲染内容
呈现内容中的文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/response.py”
82content=template.render(上下文)
render中的文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py”
140返回self.\u呈现(上下文)
文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py”位于
134返回self.nodelist.render(上下文)
render中的文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py”
840bit=self.render_节点(节点,上下文)
render_节点中的文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/debug.py”
78返回node.render(上下文)
文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/loader_-tags.py”
123返回编译的\u父对象。\u呈现(上下文)
文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py”位于
134返回self.nodelist.render(上下文)
render中的文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py”
840bit=self.render_节点(节点,上下文)
render_节点中的文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/debug.py”
78返回node.render(上下文)
文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/loader_-tags.py”
123返回编译的\u父对象。\u呈现(上下文)
文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py”位于
134返回self.nodelist.render(上下文)
render中的文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py”
840bit=self.render_节点(节点,上下文)
render_节点中的文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/debug.py”
78返回node.render(上下文)
文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/loader_-tags.py”
62结果=block.nodelist.render(上下文)
render中的文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py”
840bit=self.render_节点(节点,上下文)
render_节点中的文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/debug.py”
78返回node.render(上下文)
文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/loader_-tags.py”
62结果=block.nodelist.render(上下文)
render中的文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py”
840bit=self.render_节点(节点,上下文)
render_节点中的文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/debug.py”
78返回node.render(上下文)
render中的文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py”
1196.                     _dict=func(*已解析参数,**已解析参数)
文件“/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/contrib/admin/templatetags/adm
Template error:
In template /home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/contrib/admin/templates/admin/change_list.html, error at line 91
   'NoneType' object is not callable
   81 :         {% endif %}
   82 :       {% endblock %}
   83 :
   84 :       <form id="changelist-form" action="" method="post"{% if cl.formset.is_multipart %} enctype="multipart/form-data"{% endif %}>{% csrf_token %}
   85 :       {% if cl.formset %}
   86 :         <div>{{ cl.formset.management_form }}</div>
   87 :       {% endif %}
   88 : 
   89 :       {% block result_list %}
   90 :           {% if action_form and actions_on_top and cl.full_result_count %}{% admin_actions %}{% endif %}
   91 :            {% result_list cl %} 
   92 :           {% if action_form and actions_on_bottom and cl.full_result_count %}{% admin_actions %}{% endif %}
   93 :       {% endblock %}
   94 :       {% block pagination %}{% pagination cl %}{% endblock %}
   95 :       </form>
   96 :     </div>
   97 :   </div>
   98 : {% endblock %}
   99 : 

Traceback:
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/core/handlers/base.py" in get_response
  139.                 response = response.render()
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/response.py" in render
  105.             self.content = self.rendered_content
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/response.py" in rendered_content
  82.         content = template.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in render
  140.             return self._render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in _render
  134.         return self.nodelist.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/debug.py" in render_node
  78.             return node.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/loader_tags.py" in render
  123.         return compiled_parent._render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in _render
  134.         return self.nodelist.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/debug.py" in render_node
  78.             return node.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/loader_tags.py" in render
  123.         return compiled_parent._render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in _render
  134.         return self.nodelist.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/debug.py" in render_node
  78.             return node.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/loader_tags.py" in render
  62.             result = block.nodelist.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/debug.py" in render_node
  78.             return node.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/loader_tags.py" in render
  62.             result = block.nodelist.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/debug.py" in render_node
  78.             return node.render(context)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/template/base.py" in render
  1196.                     _dict = func(*resolved_args, **resolved_kwargs)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/contrib/admin/templatetags/admin_list.py" in result_list
  288.             'results': list(results(cl))}
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/contrib/admin/templatetags/admin_list.py" in results
  266.             yield ResultList(None, items_for_result(cl, res, None))
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/contrib/admin/templatetags/admin_list.py" in __init__
  258.         super(ResultList, self).__init__(*items)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/contrib/admin/templatetags/admin_list.py" in items_for_result
  185.             f, attr, value = lookup_field(field_name, result, cl.model_admin)
File "/home/ankit/Desktop/Python/Workspace/VirtualEnv3.3.2/local/lib/python3.3/dist-packages/django/contrib/admin/util.py" in lookup_field
  258.                 value = attr()
File "/home/ankit/Desktop/Python/Workspace/SnapShare/images/models.py" in edit_image
  30.         return '<a href="%s">Edit</a>' % reverse('images:view', args=[self.id])

Exception Type: TypeError at /admin/images/image/
Exception Value: 'NoneType' object is not callable
class ImageAdmin(admin.ModelAdmin):

    # ... the rest of the class ... #

    def edit_image(self, obj):
        return '<a href="%s">Edit</a>' % reverse('images:view', args=[obj.id])

    edit_image.short_description = 'Edit Image'
    edit_image.allow_tags = True