当我运行我的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调度程序文档.
您需要将实际视图提供给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调度程序文档.