非常基本的django教程产生错误:/ hello /中的TypeError,hello()不带参数(给定1个)

时间:2012-01-24 20:47:46

标签: python django httpresponse typeerror

我正在关注django这个教程: http://www.djangobook.com/en/2.0/chapter03/

并遵循每一步(我认为)。但是,即使是最基本的Hello World也无法正常运行。

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 :(得分:1)

请理解,对于效率,不为每个请求自动重新加载所有文件是很有意义的。即使只检查是否有任何修改是生产服务器的相当昂贵的操作。有时您可以为开发系统启用此功能(如果存在此类选项,请参阅手册)。默认情况下,有很多充分的理由不启用自动重新加载。特别是,太多的人最终会在他们的生产系统上启用它并抱怨性能......

另一个原因是临时状态通常不一致,特别是当编辑影响多个文件时。然后,自动重新加载可能会导致错误,可以通过完成编辑然后重新加载来避免。 (尽管如此,生产系统不建议在线编辑文件。但是,同步过程正在运行;您不希望服务器在仍在同步时重新加载。)

在某些情况下,可以使用Linux上的inotify等技巧让操作系统通知应用程序进行文件更改。我想manage.py脚本会做这样的事情。

答案 1 :(得分:0)

当您在视图函数中获得TypeError时,视图函数的参数不匹配。

  1. 检查是否需要request是它的第一个参数。
  2. 确保urlpatterns中的所有关键字参数都已到位。
  3. 示例:

    url(r'^user/(?name[\w\-]+)/$', 'user')

    def user(request, name):
        #Your logic