我的第一个 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 与此代码进行比较。