gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 18:02:34 36 4
gpt4 key购买 nike

我有一个客户端有一个用 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/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com