我想自定义Django REST Framework可浏览API模板(只需将商标更改为其他名称和链接)。
我已经阅读了有关如何实现此目的的文档,并首先在以下路径中进行了以下操作:hints(project)-> hints1(app)-> templates-> rest_framework-> api.html
api.html:
{% extends "rest_framework/base.html" %}
{% block title %} Handy Dev Hints - API {% endblock %}
{% block branding %}
<span>
<a class='navbar-brand' rel="nofollow" href="{% url 'html' %}">
-----HTML View----- <span class="version">1</span>
</a>
</span>
{% endblock %}
我还如下修改了settings.py,特别是DIRS部分:
settings.py:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR, os.path.join(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',
],
},
},
]
从我看过的教程和阅读的文档中,应该足以实现更改。但是,它没有用。
因此,我决定直接在site-packages库中更改base.html。
base.html:
<!DOCTYPE html>
.
.
.
{% block body %}
<body class="{% block bodyclass %}{% endblock %}">
<div class="wrapper">
{% block navbar %}
<div class="navbar navbar-static-top {% block bootstrap_navbar_variant %}navbar-inverse{% endblock %}"
role="navigation" aria-label="{% trans "navbar" %}">
<div class="container">
<span>
{% block branding %}
<a class='navbar-brand' rel="nofollow" href="{% url 'html' %}">
-----HTML View-----
</a>
{% endblock %}
当我在本地服务器上运行该解决方案时,该解决方案有效。但是,当我将文件上传到外部服务器时,它不起作用(我也将rest_framework
和rest_framework_jwt
站点程序包也上传到了外部服务器,但是我仍然想念一些东西)。
关于文档中所建议的如何使更改在外部服务器上工作的任何建议?甚至通过base.html更改方法? (或任何其他方法)。
非常感谢!
答案 0 :(得分:1)
1)首先,您似乎在应用文件夹中创建了api.htm文件,同时在项目目录级别引用模板文件夹,这意味着
[您的应用程序模板参考] 项目目录->应用程序->模板-> api.html
[django模板查询] 项目目录->模板-> api.html 会导致错误
2)其次作为替代解决方案,您选择破解站点程序包安装(非常糟糕!不建议这样做),尽管这可以在本地工作,但是当您在外部服务器上部署应用程序时,在外部服务器中重新安装了DRF(不会对您进行任何修改)
1)将 api.htm 移至项目级别的文件夹。 项目目录->模板-> api.html
{% extends "rest_framework/base.html" %}
{% block title %} Handy Dev Hints - API {% endblock %}
{% block branding %}
<span>
<a class='navbar-brand' rel="nofollow" href="{% url 'html' %}">
-----HTML View----- <span class="version">1</span>
</a>
</span>
{% endblock %}
以便django轻松找到
OR
2)您将 os.path.join('BASE_DIR','YOUR_APP_DIR','templates')添加到设置中的模板目录中。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR, os.path.join(BASE_DIR, 'YOUR_APP_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',
],
},
},
]
如果我可以补充的话,只要所有内容都放置在框架可以找到的适当路径内,下面的自定义教程就可以正常工作,这里缺少我所做的自定义。{{3 }}