非常基础的Django教程报错:TypeError at /hello/, hello() 不接受参数(传入了1个)
我正在按照这个Django的教程学习:http://www.djangobook.com/en/2.0/chapter03/
我觉得我每一步都按照说明做了。但是,连最基本的“你好,世界”都无法正常运行。
views.py
from django.http import HttpResponse
def hello(response):
return HttpResponse("Hello world")
urls.py
from django.conf.urls.defaults import *
from myproject.views import hello
urlpatterns = patterns('',
('^hello/$', hello),
)
服务器出现了这个错误:
TypeError at /hello/
hello() takes no arguments (1 given)
这本来应该很简单,但就是不管用!
2 个回答
0
当你在视图函数中遇到一个 TypeError
错误时,说明这个视图函数的参数不匹配。
- 首先检查一下,确保它的第一个参数是必需的
request
。 - 确保所有来自
urlpatterns
的关键字参数都正确无误。
举个例子:
url(r'^user/(?name[\w\-]+)/$', 'user')
def user(request, name):
#Your logic
1
请理解,为了提高效率,在每次请求时不自动重新加载所有文件是非常有道理的。即使只是检查这些文件是否被修改,这对于生产服务器来说也是一项相当耗费资源的操作。有时候,你可以在开发环境中启用这个功能(如果手册中有这样的选项,请查看)。不默认启用自动重载有很多好理由。特别是,很多人会在他们的生产系统上启用这个功能,然后抱怨性能问题……
另一个原因是,很多时候临时状态会不一致,尤其是当编辑涉及多个文件时。自动重载可能会导致错误,而这些错误是可以通过先完成编辑再重新加载来避免的。(不过,在线编辑文件在生产系统上并不推荐。但假设有一个同步过程在运行;你不希望服务器在同步时重新加载。)
在某些情况下,可以使用像Linux上的inotify这样的技巧,让操作系统在文件发生变化时通知应用程序。我想manage.py
脚本会做类似的事情。