urls.py中的Django2 AttributeError

时间:2018-07-22 14:56:30

标签: django python-3.x

我开始使用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'

我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

Django的默认文件结构

我认为要从根本上解决问题,您应该views.py文件从core/views/移到core/ 。因此,没有特定的views目录。通常,这就是Django项目的结构方式。

原因是,现在您的from core import views as coreviews不会 导入views.py,而是导入您用{构造的“ 隐式”模块{1}}目录。结果,该模块具有名为views的子模块,该子模块与views模块相对应。

解决方法:修复导入

或者,例如,如果您想在separte文件中构建视图,则可以通过编写以下内容来修复导入:

views.py

但是我不建议这样做,因为通常最好遵循Django的结构。这样做不仅更清洁,而且使其他程序员更容易理解正在发生的事情,而且引入自己的文件结构可能会造成一些麻烦,因为Django通常按一定顺序加载文件,以确保您遵循该结构,所有应加载的元素均已加载。