django - 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'
我在这里想念什么?
解决方案
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 通常具有加载文件的特定顺序,以确保如果您遵循该结构,所有应该加载的元素都被加载。
推荐阅读
- javascript - 如何使用 css 选择与其他 div 处于同一级别的嵌套 div?
- awk - 在 mac 中,sed 不会将换行符替换为逗号
- java - Webapp 硬件桥接器
- module - 使用特定宏查找函数
- optimization - Solver 中的线性优化二元约束公式
- python - 无法在 Python 中加载 sklearn 模块
- android-external-storage - android 11 中的 scopedStorage 功能是否有临时修复?
- python - python web3 eth getBalance没有响应
- go - Gorm 使用 Scan() 左连接
- r - 将 corr.test 输出转换为 R 中的 data.frame