1

我正在 django 3.1.1 中创建我的第一个 django 应用程序。有旧 django 版本的视频教程,但它们并不总是有效......我想为 home 和 about 部分创建 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 还要求我将我的模板放在名为模板的主要 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 所在的文件夹中有模板更好吗?

4

2 回答 2

1

好吧,我是根据你的灵感自己找到的 :) 谢谢@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']

请比较我从主帖到这个的代码。

于 2020-09-19T07:26:18.207 回答
-1

templatesDjango 在名为您需要在应用程序文件夹中创建该文件夹并将其放入其中的文件夹中查找模板home.html

于 2020-09-15T09:53:37.303 回答