2022年5月更新:
只要你正确地遵循本教程,你不需要改变(触摸)“settings.py”中“TEMPLATES”的默认设置,如下所示:
# "core/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",
],
},
},
]
同样,只要你正确地遵循本教程,“模板”可以在应用程序文件夹下正确读取,如下所示:
root
├── core
│ ├── settings.py
│ ├── urls.py
│ ...
├── myapp1
│ ├── templates
│ │ └── myapp1
│ │ └── myapp1.html
│ ├── urls.py
│ ├── views.py
│ ...
├── myapp2
│ ├── templates
│ │ └── myapp2
│ │ └── myapp2.html
│ ├── urls.py
│ ├── views.py
│ ...
而“templates”可以在django项目根目录下正确读取,如下所示:
root
├── core
│ ├── settings.py
│ ├── urls.py
│ ...
├── myapp1
│ ├── urls.py
│ ├── views.py
│ ...
├── myapp2
│ ├── urls.py
│ ├── views.py
│ ...
├── templates
│ ├── myapp1
| | └── myapp1.html
| └── myapp2
| └── myapp2.html
所以,你需要做的关键事情就是不要改变(触摸)“settings.py”中“TEMPLATES”的默认设置,如下所示:
# "core/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",
],
},
},
]
然后,将“myapp1”和“myapp2”应用程序设置为“core/settings.py”中的“INSTALLED_APPS”,如下所示:
# "core/settings.py"
INSTALLED_APPS = [
...
"myapp1",
"myapp2",
]
然后,如下所示,编写“myapp1”和“myapp2”应用程序的每个“views.py”。注意,你需要把每个“模板”的路径写为“myapp1/myapp1.html”和“myapp2.html”,而不是在“render()”中只写每个“模板”的路径“myapp1.html”和“myapp2.html”,如下所示:
# "myapp1/views.py"
from django.shortcuts import render
def myapp1(request): # Don't write just "myapp1.html"
return render(request, "myapp1/myapp1.html")
# "myapp2/views.py"
from django.shortcuts import render
def myapp2(request): # Don't write just "myapp2.html"
return render(request, "myapp2/myapp2.html")
然后,设置“myapp1”和“myapp2”应用程序的“views.py”路径,如下图所示:
# "myapp1/views.py"
from django.urls import include, path
from . import views
urlpatterns = [
path("", views.myapp1, name='myapp1'), # Here
]
# "myapp2/views.py"
from django.urls import include, path
from . import views
urlpatterns = [
path("", views.myapp2, name='myapp2'), # Here
]
然后,将“core/urls.py”中的“myapp1”和“myapp2”应用程序的每个路径设置为“urls.py”,如下所示。最后,“myapp1”和“myapp2”应用程序的模板将被读取,没有任何错误:
# "core/urls.py"
from django.urls import include, path
urlpatterns = [
...
path("myapp1/", include('myapp1.urls')), # Here
path("myapp2/", include('myapp2.urls')), # Here
]