首页 > 解决方案 > urls.py 中的 Django2 AttributeError

问题描述

我开始使用 Django,但在尝试执行时遇到错误python3 manage.py runserver

fmlg-后端/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-后端/核心/视图/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'

我在这里想念什么?

标签: djangopython-3.x

解决方案


Django的默认文件结构

我认为要从根本上解决问题,您应该views.py文件core/views/core/. 所以没有具体的views目录。这通常是 Django 项目的结构。

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

解决方法:修复导入

或者,例如,如果您想在单独的文件中构建视图,您可以通过以下方式修复导入:

from core.views import views as coreviews

但我不建议这样做,因为通常最好遵循 Django 的结构。它不仅更简洁,因此其他程序员更容易理解正在发生的事情,而且引入您自己的文件结构可能会产生一些麻烦,因为 Django 通常具有加载文件的特定顺序,以确保如果您遵循该结构,所有应该加载的元素都被加载。


推荐阅读