NameError: name 'hello_world' is not defined

NameError: name 'hello_world' is not defined

使用 pycharm 社区 python3.6.2 Django 2.0.3

views.py

from django.http import HttpResponse

def hello_world(request):  
    return HttpResponse('Hello World')

urls.py

from django.conf.urls import url
from django.contrib import admin

from . import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', views, hello_world),

]

我想弄清楚但遗漏了一些东西。

运行 在 pycharm

时出错

urls.py", line 8, in url(r'^$', views, hello_world),

NameError: name 'hello_world' is not defined

错误告诉您没有定义 hello_world 等变量。您需要将其更改为:

url(r'^$', views.hello_world)

其中 views 是您在顶部导入的视图模块。

这行代码是错误的

url(r'^$', views, hello_world)

您刚刚导入了 view,即文件 view.py。现在你需要调用函数视图,它将是这样的:

url(r'^$', views.hello_world)

您可能认为给 url 起个名字会很有用,这样您以后就可以在模板中使用它作为参考。

url(r'^$', views.hello_world, name='hello-world')

此外,您可以按如下方式导入 view.py:

from .views import hello_world

Niayesh Isky 评论中建议的下一个是可能的,但不鼓励。

from .views import *