我的第一个 Django 应用程序 - 如何导入模板?
My first django app - how to import templates?
我正在 Django 3.1.1 中创建我的第一个 Django 应用程序。有针对旧 django 版本的视频教程,但它们并不总是有效...我想为主页和关于部分创建 HTML 页面。我已经写了一些 HTML 个文件,但是
def home(request):
return render(request, 'home.html')
不想工作。我添加我的文件树给你看文件的结构。
RemoveBigFile
├── RBF1module
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── RemoveBigFile
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-38.pyc
│ │ ├── settings.cpython-38.pyc
│ │ ├── urls.cpython-38.pyc
│ │ ├── views.cpython-38.pyc
│ │ └── wsgi.cpython-38.pyc
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ ├── views.py
│ └── wsgi.py
├── RemoveBigFile.sublime-project
├── RemoveBigFile.sublime-workspace
├── db.sqlite3
├── manage.py
└── templates
├── about.html
└── home.html
这就是我收到的错误消息:
TemplateDoesNotExist at /
home.html
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 3.1.1
Exception Type: TemplateDoesNotExist
Exception Value:
home.html
Django 还要求我将我的模板放在一个名为 templates 的主要 django 安装目录中,据我所知,如果我这样做,我将无法将我的应用程序发送给其他人(那是完成后我打算用它做什么)。
我使用 RemoveBigFile/RemoveBigFile views.py 将 django 指向 HTML 模板。
编辑:根据要求,我添加了来自 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 中没有任何内容。我应该将模板的路径放在 DIRS 括号中吗?
我还有一个问题 - 将模板放在 manage.py 所在的文件夹中还是 settings.py 所在的文件夹中更好?
Django 在名为 templates
的文件夹中查找模板,您需要在应用程序文件夹中创建该文件夹并将 home.html
放入其中。
好的,靠你的灵感自己找到的:)
谢谢@Selcuk 和@m.arthur。感谢您也贡献@Mahmoud Ishag :)
答案就在那里,我一定没有将此应用程序创建为项目,并且模板中缺少一个短字符串:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'],
'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': [BASE_DIR / 'templates']
请将我的主要代码 post 与此代码进行比较。
我正在 Django 3.1.1 中创建我的第一个 Django 应用程序。有针对旧 django 版本的视频教程,但它们并不总是有效...我想为主页和关于部分创建 HTML 页面。我已经写了一些 HTML 个文件,但是
def home(request):
return render(request, 'home.html')
不想工作。我添加我的文件树给你看文件的结构。
RemoveBigFile
├── RBF1module
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── RemoveBigFile
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-38.pyc
│ │ ├── settings.cpython-38.pyc
│ │ ├── urls.cpython-38.pyc
│ │ ├── views.cpython-38.pyc
│ │ └── wsgi.cpython-38.pyc
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ ├── views.py
│ └── wsgi.py
├── RemoveBigFile.sublime-project
├── RemoveBigFile.sublime-workspace
├── db.sqlite3
├── manage.py
└── templates
├── about.html
└── home.html
这就是我收到的错误消息:
TemplateDoesNotExist at /
home.html
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 3.1.1
Exception Type: TemplateDoesNotExist
Exception Value:
home.html
Django 还要求我将我的模板放在一个名为 templates 的主要 django 安装目录中,据我所知,如果我这样做,我将无法将我的应用程序发送给其他人(那是完成后我打算用它做什么)。 我使用 RemoveBigFile/RemoveBigFile views.py 将 django 指向 HTML 模板。
编辑:根据要求,我添加了来自 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 中没有任何内容。我应该将模板的路径放在 DIRS 括号中吗?
我还有一个问题 - 将模板放在 manage.py 所在的文件夹中还是 settings.py 所在的文件夹中更好?
Django 在名为 templates
的文件夹中查找模板,您需要在应用程序文件夹中创建该文件夹并将 home.html
放入其中。
好的,靠你的灵感自己找到的:) 谢谢@Selcuk 和@m.arthur。感谢您也贡献@Mahmoud Ishag :)
答案就在那里,我一定没有将此应用程序创建为项目,并且模板中缺少一个短字符串:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'],
'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': [BASE_DIR / 'templates']
请将我的主要代码 post 与此代码进行比较。