2014-01-07 6 views
2

Когда я запускаю мое приложение Python Django, я получаю сообщение об ошибке:Объект 'str' не является вызываемым, как иметь дело?

'str' object is not callable

Я попытался решения здесь: TypeError: 'str' object is not callable (Python), но они не работают для меня. Я пытаюсь запустить Django книгу образца:

view.py:

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

def current_time(request): 
    now = datetime.datetime.now() 
    html = "<html><head></head><body>%s</body></html>" % 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'), 
) 

Это URL я пытаюсь: 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 
+0

Пожалуйста, покажите нам * полный * след из исключения. –

+0

Код, указанный здесь, не показывает вашу проблему, если вы каким-то образом не назначены 'django.http.HttpResponse' в другом месте вашего кода. –

+0

См. Строку «Переключиться в режим копирования и вставки» в сообщении об ошибке? Вы действительно хотите сделать это в следующий раз; нажмите на эту ссылку и получите текстовую версию только трассировки для копирования в ваш вопрос. –

ответ

6

Вы должны дать фактический Посмотреть к 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'), 
) 

detailed URL dispatcher documentation См.

+2

Я хочу принять его как ответ, и он говорит мне, что вы не можете принять ответ до четырех минут! lol, Какой быстрый ответ, быстрая проверка, быстро принимайте! Спасибо чувак. –

Смежные вопросы