'str'对象不可调用,如何处理?

 zz998877 发布于 2023-02-06 09:59

当我运行我的Python Django应用程序时,我收到一个错误:

'str'对象不可调用

我在这里尝试了解决方案:TypeError:'str'对象不可调用(Python),但它们对我不起作用.我正在尝试运行Django书籍样本:

view.py:

# Create your views here.
from django.http import HttpResponse
import datetime

def current_time(request):
    now = datetime.datetime.now()
    html = "%s" % str(now)
    return HttpResponse(html)

def hello(request,name):
    return HttpResponse("Hello django")

def what(request):
    return HttpResponse("what's the problem django?")

urls.py:

from django.conf.urls import patterns, include, url
from hello_django.views import current_time,hello,what


urlpatterns = patterns('',
    url(r'^time/$','current_time'),
    url(r'^what/$','what'),
    url(r'^hello/([a-zA-Z0-9]+)','hello'),
)

这是我正在尝试的网址:http://127.0.0.1:8000/what/.

堆栈跟踪:

TypeError at /what/
'str' object is not callable
Request Method: GET
Request URL:    http://127.0.0.1:8000/what/
Django Version: 1.5.1
Exception Type: TypeError
Exception Value:    
'str' object is not callable
Exception Location: C:\Python27\lib\site-packages\django\core\handlers\base.py in get_response, line 115
Python Executable:  C:\Python27\python.exe
Python Version: 2.7.4
Python Path:    
['D:\\Developer Center\\PyCharm\\helloDjango',
 'C:\\Python27\\lib\\site-packages\\pip-1.3.1-py2.7.egg',
 'C:\\Python27\\lib\\site-packages\\mysql_python-1.2.4-py2.7-win32.egg',
 'D:\\Developer Center\\PyCharm\\helloDjango',
 'C:\\Windows\\SYSTEM32\\python27.zip',
 'C:\\Python27\\DLLs',
 'C:\\Python27\\lib',
 'C:\\Python27\\lib\\plat-win',
 'C:\\Python27\\lib\\lib-tk',
 'C:\\Python27',
 'C:\\Python27\\lib\\site-packages',
 'C:\\Python27\\lib\\site-packages\\PIL']
Server time:    Tue, 7 Jan 2014 11:44:30 +0330
Traceback Switch to copy-and-paste view

C:\Python27\lib\site-packages\django\core\handlers\base.py in get_response
                        response = callback(request, *callback_args, **callback_kwargs) ...
? Local vars

Martijn Piet.. 6

您需要将实际视图提供url():

urlpatterns = patterns('',
    url(r'^time/$', current_time),
    url(r'^what/$', what),
    url(r'^hello/([a-zA-Z0-9]+)', hello),
)

请注意,我删除了引号what和其他视图函数.

你仍然可以在url()配置中使用字符串,但是你需要.在第一个参数patterns()(字符串)中使用语法或命名模块,然后你也不需要导入函数:

urlpatterns = patterns('',
    url(r'^time/$', 'hello_django.views.current_time'),
    url(r'^what/$', 'hello_django.views.what'),
    url(r'^hello/([a-zA-Z0-9]+)', 'hello_django.views.hello'),
)

要么

urlpatterns = patterns('hello_django.views',
    url(r'^time/$', 'current_time'),
    url(r'^what/$', 'what'),
    url(r'^hello/([a-zA-Z0-9]+)', 'hello'),
)

请参阅详细的URL调度程序文档.

1 个回答
  • 您需要将实际视图提供url():

    urlpatterns = patterns('',
        url(r'^time/$', current_time),
        url(r'^what/$', what),
        url(r'^hello/([a-zA-Z0-9]+)', hello),
    )
    

    请注意,我删除了引号what和其他视图函数.

    你仍然可以在url()配置中使用字符串,但是你需要<modulename>.<viewname>在第一个参数patterns()(字符串)中使用语法或命名模块,然后你也不需要导入函数:

    urlpatterns = patterns('',
        url(r'^time/$', 'hello_django.views.current_time'),
        url(r'^what/$', 'hello_django.views.what'),
        url(r'^hello/([a-zA-Z0-9]+)', 'hello_django.views.hello'),
    )
    

    要么

    urlpatterns = patterns('hello_django.views',
        url(r'^time/$', 'current_time'),
        url(r'^what/$', 'what'),
        url(r'^hello/([a-zA-Z0-9]+)', 'hello'),
    )
    

    请参阅详细的URL调度程序文档.

    2023-02-06 10:03 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有