无法修改django rest framework base.html文件

时间:2014-09-23 09:06:01

标签: python django rest django-rest-framework

我正在使用django rest框架,如下所述:django rest framework doc我在模板目录中添加了/rest_framework/api.html。

现在的结构是:

|
|\
| apps
|  \
|   settings.py
\
 templates
  \
   rest_framework
    \
     api.html

api.html:

{% extends "rest_framework/base.html" %}

{% block footer %}
    Hello !
{% endblock %}

settings.py:

...

TEMPLATE_LOADERS = (
    ('django.template.loaders.cached.Loader', (
        'django.template.loaders.filesystem.Loader',
        'django.template.loaders.app_directories.Loader',
        'django.template.loaders.eggs.Loader',
    )),
)

...

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'django.contrib.admindocs',
    'django.contrib.markup',
    'django.contrib.webdesign',
     ...
    'rest_framework',
     ...


)

...

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',),
    'PAGINATE_BY': 10
}

我在api.html中进行的修改不会显示在可浏览的api中。我做错了什么?

6 个答案:

答案 0 :(得分:8)

您是否缺少主要settings.py中的DIRS(这告诉我们在哪里寻找模板(覆盖模板):

 TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        ...
     }

答案 1 :(得分:3)

false

我遇到了一个确切的问题:模板没有被拾取到模板存在于我的一个项目应用程序目录中,如下所示:

<强> WriteJson

djangorestframework==3.5.x

<强> Project Structure

project/
    app1/
        templates/
            app1/
                ...
            rest_framework/
                app.html

我必须关注settings.py的评论,并在应用目录的之外添加一个特定的模板文件夹

<强> DEBUG = True TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ ... ], 'debug': DEBUG }, }, ]

joao figueiredo

<强> Project Structure

project/
    app1/
        templates/
            app1/
                ...
    templates/  # Move your file to a specific template dir
        rest_framework/
            app.html

答案 2 :(得分:2)

您使用的是哪个版本的Django REST Framework? 我对base.html中的块页脚进行了更改,并计划在3.0版本中进行更改。

你的'你好'!也没有显示在页面的源代码中(你可以通过按CTRL + U来获取它)?

如果是,那么最终可能是CSS的问题使颜色变白。你可以把'你好!'在这样的标签中:<p>Hello !</p>

编辑:

其他信息。

粘性页脚显示总是低于页面底部60px的问题,因此需要向下滚动才能看到它。如果您使用的是旧版本,则可能也会导致问题。 最重要的问题是:'你好!'发送到浏览器的源HTML中根本没有,或者它在那里,但你在页面上看不到它?

请给我一个反馈,以便我们解决这个问题。

答案 3 :(得分:1)

在Django&gt; = 1.8中,您还要添加&#34; APP_DIRS&#34;在TEMPLATES词典中为true。

TEMPLATES = [ {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'APP_DIRS': True,
    'DIRS': [BASE_DIR,os.path.join(BASE_DIR, 'templates')],
    ...  }

答案 4 :(得分:0)

您可以将您的tempaltes设置更改为

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [BASE_DIR,os.path.join(BASE_DIR, 'templates')],
    ...
 }

如果你使用django1.8,因为它不同地加载tempalte,BASE_DIR用于你的模板,os.path.join(BASE_DIR,&#39; templates&#39;)用于django-rest-framework。 / p>

答案 5 :(得分:0)

有一个更简单的解决方案。只需将'rest_framework'放在INSTALLED_APPS列表的底部即可。或至少在您要覆盖api模板的应用程序之后。这样,django会先进入您应用的templates文件夹,以搜索api.html模板,然后再进入rest_framework tempalte文件夹。

让我们将此应用称为“ myapi”。就我而言,我有:

项目结构

project/
    myapi/
        templates/
            api/
                ...
            rest_framework/
                app.html

settings.py

INSTALLED_APPS = (
    ...
    'myapi',
    'rest_framework'
)

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                ...
            ],
            'debug': DEBUG
        },
    },
]