我正在使用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中。我做错了什么?
答案 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
},
},
]