django - Django 将所有请求定向到子应用程序而不是 mainapp
问题描述
这是我的项目的树:
├── db.sqlite3
├── kitchen_analytics
│ ├── settings.py
│ ├── static_html
│ ├── urls.py
│ └── wsgi.py
├── manage.py
├── statistics101
│ ├── admin.py
│ ├── apps.py
│ ├── computation_logic
│ │ └── dish_count.py
│ ├── migrations
│ ├── models_default.py
│ ├── models.py
│ ├── statsrouter.py
│ ├── templates
│ │ └── statistics101
│ │ └── orders_list.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
└── templates
└── index.html
我正在尝试添加简单的 html 索引页面,这是我的 urlpatterns 配置kitchen_analytics/urls.py
:
urlpatterns = [
path('', TemplateView.as_view(template_name='index.html')),
path('admin/', admin.site.urls),
path('', include(statistics101.urls, namespace='statistics101')),
]
当我去http://127.0.0.1:8000/
我得到模板未找到错误。Django 尝试去statistics101
app 并在那里寻找 index.html。我该如何解决?
同样出于某种原因,我必须保留statistics101
app 的模板,templates/statistics101
而不仅仅是templates
. 如何将其保存在模板中?
这是一个错误:
TemplateDoesNotExist at /
index.html
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 2.1.7
Exception Type: TemplateDoesNotExist
Exception Value:
index.html
Exception Location: /home/aydar/PycharmProjects/kitchen_analytics/venv/lib/python3.6/site-packages/django/template/loader.py in select_template, line 47
Python Executable: /home/aydar/PycharmProjects/kitchen_analytics/venv/bin/python
Python Version: 3.6.8
Python Path:
['/home/aydar/PycharmProjects/kitchen_analytics',
'/usr/lib/python36.zip',
'/usr/lib/python3.6',
'/usr/lib/python3.6/lib-dynload',
'/home/aydar/PycharmProjects/kitchen_analytics/venv/lib/python3.6/site-packages',
'/home/aydar/PycharmProjects/kitchen_analytics/venv/lib/python3.6/site-packages/setuptools-39.1.0-py3.6.egg']
Server time: Tue, 19 Mar 2019 14:24:12 +0000
这是模板加载器事后分析:
Using engine django:
django.template.loaders.app_directories.Loader: /home/uname/PycharmProjects/kitchen_analytics/statistics101/templates/index.html (Source does not exist)
django.template.loaders.app_directories.Loader: /home/uname/PycharmProjects/kitchen_analytics/venv/lib/python3.6/site-packages/django/contrib/admin/templates/index.html (Source does not exist)
django.template.loaders.app_directories.Loader: /home/uname/PycharmProjects/kitchen_analytics/venv/lib/python3.6/site-packages/django/contrib/auth/templates/index.html (Source does not exist)
这是来自 settings.py 的模板设置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
解决方案
您的模板 DIRS 设置中不存在您的顶级模板目录。你应该添加它:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
...
}
]
推荐阅读
- amazon-web-services - 定期在 AWS RDS 中归档特定表的数据
- google-apps-script - 使用受保护的工作表和范围“仅查看”模式
- python - 我附上了我的代码。请检查它并告诉我错误的原因。解释一下?
- python - python def 方法应该有“self”作为第一个参数
- python-3.x - 如何更改 Visual Studio 代码工具栏的颜色?
- c# - 检查对象是从哪个类创建的
- javascript - JavaScript 数组过滤和映射问题。如何进行嵌套过滤?
- python - plotly 饼图中的自定义文本标签
- spring - 如何使用与 UTC 不同的时区在 MongoDB 中按日期范围查找对象?
- axios - NestJS:使用基于 axios 的客户端进行 e2e 测试未按预期工作