urls.py 中的 Django2 AttributeError

标签 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'

我在这里缺少什么?

最佳答案

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/

相关文章:

Django Rest Framework - 带有身份验证/权限装饰器的 GenericViewSet

添加中间表单后,Django 管理站点操作不起作用

python-3.x - debhelper 指示使用 python3,但使用 python2 运行 setup.py

python-3.x - Google Cloud Functions Python 日志记录问题

python - 在 Ubuntu 中运行 OpenCV python 应用程序时 Qt 链接错误

python - Django python 中的 mysql 'LIKE'

python - 无法在 VPS 上进行基本的 Django 设置

Django ArrayField 过滤包含匹配

python-3.x - 如何同时运行两个脚本

python - 如何获取字典元组的最大值