python - 添加链接到 django 管理页面

标签 python django django-admin

我有一个客户端有一个用 django 构建的应用程序。在每一页上 他们的应用程序是指向他们管理站点的链接。他们告诉我管理网站 完全由 django 生成,他们从未对其进行定制 前。在管理页面的第一行,它说:

Django administration          Welcome, admin. Change password / Log out

他们要我在“Django”的左侧添加到该行的链接 administration”,这将使他们返回到他们所在的页面 他们点击链接进入管理网站。

所以我这里有两个问题:

  1. 如何覆盖该行以添加链接?出现那个页面 由contrib/admin/templates/admin/base.html生成,我试过了 按照以下指示覆盖它 https://docs.djangoproject.com/en/1.2/ref/contrib/admin/#overriding-a ..., 但无论我做什么似乎都没有效果。

  2. 如何获取他们来自的应用程序页面的链接?它是 不仅仅是返回一页,因为他们可以浏览所有页面 在单击“返回应用程序”之前先在管理站点的位置 链接。

最佳答案

request.session 中有很多方法可以存储上次访问的非管理员 url。比如一个中间件:

import re

class LastSiteUrl(object):
    def is_admin_url(self, url):
        return re.search('^(http:\/\/.*){0,1}\/admin\/', url) is not None

    def process_request(self, request):
        if self.is_admin_url(request.path) and \
            not self.is_admin_url(request.META.get('HTTP_REFERER','')):
            request.session['last_site_url'] = request.META.get('HTTP_REFERER','')

然后覆盖模板:

  1. 将最后一个非管理员 url 存储在 request.session 中,例如将上面的类放在yourproject/middleware.py中,添加到settings.MIDDLEWARE_CLASSES:middleware.LastSiteUrl

  2. 准备用于覆盖的管理基础站点模板,将 django/contrib/admin/templates/admin/base_site.html 复制到 yourproject/templates/admin/base_site.html

  3. 链接到 request.session.last_site_url,例如在yourproject/templates/admin/base_site.html中,找到{% block branding %},在这个block的H1标签前,添加一个HTML链接到{ { request.session.last_site_url }}.

它应该是这样的:

{% block branding %}
    {% if request.session.last_site_url %}
        <a href="{{ request.session.last_site_url }}">back to site</a>
    {% endif %}
    <h1 id="site-name">{% trans 'Django administration' %}</h1>
{% endblock %}

关于python - 添加链接到 django 管理页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9873582/

相关文章:

python - 正则表达式重复中的空格 {m,n}

python - 如何向汤森路透 Open Calais API 提交 Python 请求

django - 在管理中使用计算字段

javascript - Django 管理员帮助工具提示中的文本选择字段

django - Postgres EXPLAIN ANALYZE 成本估算行数大大高于实际行数。没有吸尘?

python - 添加自定义 Django 管理操作

python - 从未经训练的数据集中为 doc2vec 中的句子构建向量

python - Scrapy/BeautifulSoup 模拟 'clicking' 一个按钮以加载网站的一部分

Django-allauth OAuth2 刷新 token

django - TemplateSyntaxError at/'avatar_tags' 不是有效的标签库