Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django模板和版本_Django_Templates - Fatal编程技术网

Django模板和版本

Django模板和版本,django,templates,Django,Templates,我在网上搜索了Django的最新版本,在Django官方文档中是2.0.6。但官方页面上给出的版本只有2.0、2.1、1.9等。因此我想知道2.0的文档是否适用于所有版本,如2.0.5、2.0.6、2.0.7等,因为没有2.0.6版本的文档。但是2.0版又是不同的,它可以用pip安装 早些时候,我使用的是Django 2.0.6,模板有问题。我首先以web的名字开始了我的项目,然后制作了一个名为music的应用程序。在里面,我制作了一个模板目录,在另一个音乐文件夹中,我把index.html文件

我在网上搜索了Django的最新版本,在Django官方文档中是2.0.6。但官方页面上给出的版本只有2.0、2.1、1.9等。因此我想知道2.0的文档是否适用于所有版本,如2.0.5、2.0.6、2.0.7等,因为没有2.0.6版本的文档。但是2.0版又是不同的,它可以用pip安装

早些时候,我使用的是Django 2.0.6,模板有问题。我首先以web的名字开始了我的项目,然后制作了一个名为music的应用程序。在里面,我制作了一个模板目录,在另一个音乐文件夹中,我把index.html文件放在里面。所以总的来说,这条路是这样的 web/music/template/music/index.html。现在我正在使用django.shortcuts中的render

我在音乐目录的view.py文件中将index.html文件引用为music/index.html。但它无法找到文件,只是显示错误


我认为这可能是版本问题。

您是否已将模板目录添加到
设置文件中

作为:

假设您试图覆盖名为blog的第三方应用程序的模板,该应用程序提供了blog/post.html和blog/list.html模板。项目的相关设置如下所示:

import os 
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 INSTALLED_APPS = [ ..., 'blog', ..., ] 
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, ... }, ] 
如果使用默认项目模板创建项目,则模板设置和基本目录将已存在。需要修改的设置是DIRS

这些设置假定项目根目录中有templatesdirectory。要覆盖博客应用程序的模板,请在templates目录中创建一个文件夹,然后将模板文件添加到该文件夹:

templates/ 
    blog/ 
        list.html 
        post.html 
模板加载器首先在DIRS目录中查找模板。当blog应用程序中的视图请求blog/post.html和blog/list.htmltemplates时,加载程序将返回您刚刚创建的文件



因此,为了添加您自己的模板文件夹,您应该修改
DIRS
设置

您的文件夹结构应如下所示:

music/                  <-- higher level folder
 |-- myproject/             <-- django project folder
 |    |-- __init__.py
 |    |-- settings.py
 |    |-- urls.py
 |    |-- wsgi.py
 |-- templates         <-- Templates folder
 |    |-- music
 |    |    |-- index.html
 |-- static            <-- Static folder
 |    |-- css
 |    |-- js
 |    |-- images
 |    +-- manage.py
 +-- venv/                  <-- virtual environment folder

音乐/否。我需要这样做吗。怎么做?为什么你把myproject文件夹包括了3次。它应该只来两次。一个是项目,另一个是应用程序或主页,但在官方文档中提到在我们的应用程序中创建一个模板文件夹,这是文档中的投票,这里是音乐。在这个文件夹中创建另一个音乐文件夹,并将index.html放在其中。因此,整个路径变成project/app/template/app/index.html。我们必须将其引用为app/index.html,因为django默认看到模板文件夹。此外,我们不需要对设置进行任何更改。文档中没有关于settings.py文件中任何更改的内容。你能解释一下区别吗?它不像project/app/template/app/index.html。你的模板文件夹应该在路径music/templates/music/index.html中,这里第一个音乐是你的项目/templates/app/index.html。应用程序和模板应位于项目文件夹中。
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, "templates")],       <-- add this line
        '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',
            ],
        },
    },
]
def index(request):
     return render(request, "music/index.html", )    <-- Dont forget this here music is your folder's name