Django 预览,TypeError:'str' 对象不可调用

Posted

技术标签:

【中文标题】Django 预览,TypeError:\'str\' 对象不可调用【英文标题】:Django preview, TypeError: 'str' object is not callableDjango 预览,TypeError:'str' 对象不可调用 【发布时间】:2010-11-26 03:09:29 【问题描述】:

我正在尝试制作预览功能。我正在看这个博客,Django Admin Preview,但现在出现以下错误,不知道是什么意思。

    Traceback (most recent call last):

     File "/home/user/webapps/django/lib/python2.5/django/core/handlers/base.py", line 92, in get_response
       response = callback(request, *callback_args, **callback_kwargs)

    TypeError: 'str' object is not callable

我迷路了..

编辑:

谢谢大家,这是我的 view.py 和 url.py:

    from diligencia.diligencias.views import preview

    url(r'^admin/diligencias/diligencia/(?P<object_id>\d+)/preview/$','preview'),
    (r'^admin/(.*)', admin.site.root),

    from diligencia.diligencias.models import Diligencia

    @staff_member_required
    def preview(request, object_id):
        return object_detail(request, object_id=object_id,queryset=Diligencia.objects.all(), template_object_name = 'diligencia_detail.html', )

【问题讨论】:

更多关于这方面的信息会很有帮助。您的 urls.py 和视图内容是哪个?您能想到可能导致异常的相关内容吗? 【参考方案1】:

urlconf 中url 函数的签名是这样的:

def url(regex, view, kwargs=None, name=None, prefix='')

您仅使用位置参数,但仅传递正则表达式、视图和名称。所以 Python 认为你的第三个参数是 kwargs 字典,而不是名称。

相反,这样做:

url(r'^admin/diligencias/diligencia/(?P<object_id>\d+)/preview/$', name='preview'),

将名称作为 kwarg 传递,以便 Python 正确识别它。

【讨论】:

Daniel 谢谢,换垃圾工作正常: url(r'^admin/diligencias/diligencia/(?P\d+)/preview/$', preview, name='preview '),【参考方案2】:

我怀疑您的视图不是函数。确保urls.py 中的参数是一个接受一个参数的函数。喜欢:

import default

url(r'^s(?:ite)?/search$', default.search, name="search"),

然后你有 default.py

def search(request) :
    # do stuff

【讨论】:

以上是关于Django 预览,TypeError:'str' 对象不可调用的主要内容,如果未能解决你的问题,请参考以下文章

Django Rest Framework TypeError需要一个类似字节的对象,而不是'str'

TypeError: connect() 参数 4 必须是 str,而不是 WindowsPath。 /*我在简单登录 django 项目中遇到的错误*/

/writeReview/1 __str__ 处的 Django 模型 TypeError 返回非字符串(int 类型)

mysql-connector-python cursor_cent.py 文件上的 Django 迁移错误“TypeError:序列项 1:预期类似字节的对象,str found”

Python manage.py collectstatic TypeError: an integer is required (got type str)

TypeError at /admin/booktest/book_infor/add/ __str__ returned non-string (type bytes)