非常基本的django教程产生错误:在/hello/,hello()处的TypeError不接受任何参数(给定1)



我正在学习django的教程:http://www.djangobook.com/en/2.0/chapter03/

并遵循了每一步的话(我认为)。然而,即使是最基本的Hello World也无法正常工作。

视图.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)

这应该很简单,但就是不起作用!

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

另一个原因是,临时状态通常是不一致的,尤其是当编辑影响多个文件时。自动重新加载可能会导致一个错误,本可以通过完成编辑,然后重新加载来避免。(不过,这对于生产系统在线编辑文件是不可取的。但是,比如说,同步过程正在运行;你不希望你的服务器在同步时重新加载。)

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

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

  1. 检查它是否将所需的request作为其第一个参数
  2. 确保urlpatterns中的所有关键字参数都已就位

示例:

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

def user(request, name):
    #Your logic

最新更新