我正在开始使用 Django,但在尝试执行 python3 manage.py runserver
时遇到错误。
fmlg-backend/fmlg/urls.py
from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from core import views as coreviews
urlpatterns = ['',
url(r'^$', coreviews.home),
path('admin/', admin.site.urls)
]
fmlg-backend/core/views/views.py
from django.shortcuts import render
def home(request):
return render(request, 'core/home.html')
python3 manage.py runserver
输出:
File "/home/florian/Workspace/project/fmlg-backend/fmlg/urls.py", line 22, in <module>
url(r'^$', coreviews.home),
AttributeError: module 'core.views' has no attribute 'home'
我在这里缺少什么?
最佳答案
Django的默认文件结构
我认为要从根本上解决问题,您应该将 views.py
文件从 core/views/
移动到 core/
>。所以没有特定的 views
目录。这通常是 Django 项目的结构。
原因是现在您的 from core import views as coreviews
将不会导入views.py
,而是“您使用 views
目录构建的隐式模块。因此,该模块有一个名为 views
的子模块,对应于 views.py
模块。
解决方法:修复导入
或者,如果您想要在单独的文件中构建 View ,您可以通过编写以下内容来修复导入:
from core<b>.views</b> import views as coreviews
但我不建议这样做,因为通常最好遵循 Django 的结构。它不仅更干净,因此其他程序员更容易理解正在发生的事情,但引入您自己的文件结构可能会带来一些麻烦,因为 Django 通常有一定的加载文件的顺序,以确保您遵循该结构,所有应该加载的元素都已加载。
关于urls.py 中的 Django2 AttributeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51466319/