如何更改django admin"查看网站"链接到自定义绝对网址

dim*_*rik 12 python django django-admin

我有基于Django和JS应用程序构建的REST API.两者都在不同的领域.如何以这种方式更改django admin"查看网站"链接,以便它将打开JS应用程序?我试图通过绝对链接(https://docs.djangoproject.com/es/1.10/ref/contrib/admin/#django.contrib.admin.AdminSite.site_url),但看起来它不起作用 - 只允许的相对路径

Nit*_*ain 12

我更喜欢重置admin.site.site_urlinurls.py以及其他站点更改(而不是在admin.py文件中执行此操作,因为项目可能具有多个 admin.py)

# urls.py
admin.site.site_url = ''  # Removes the 'View Site' link
admin.site.site_header = 'My Site'
Run Code Online (Sandbox Code Playgroud)

  • 这非常巧妙,我用它来自定义其他管理界面组件:`admin.site.site_title = "Company Title"`、`admin.site.index_title = "Administration Portal"` 等... (2认同)

Ham*_*iou 11

在Django 1.11.5中,似乎: from django.contrib import admin并且 admin.site.site_url = 'https:....'admin.py文件中就足够了

  • 请注意,将`admin.site.site_url`设置为`None`会完全删除链接 - 这在某些情况下可能很有用. (5认同)
  • 这是最新的[docs](https://docs.djangoproject.com/en/stable/ref/contrib/admin/#django.contrib.admin.AdminSite.site_url)所说的。 (2认同)

Ari*_*ury 8

默认情况下,“VIEW SITE”指向“/”,即 localhost:8000(假定默认设置)。

要更改它,请使用(在 admin.py 中):

admin.site.site_url = "/mySite"
Run Code Online (Sandbox Code Playgroud)

在 Django 2.1 上测试


Наз*_*кий 5

我可以想出两种解决方案。

首先,您可以使用自定义模板 admin/base.html。但是,通读默认模板时,您必须复制粘贴大量代码才能更改链接,这似乎有点矫枉过正。

另一种解决方案涉及覆盖AdminSite. AdminSite有一个名为 的属性site_url,似乎改变它就可以完成这项工作。因此,从本质上讲,您可以执行以下操作:

your_app/admin.py

from django.contrib.admin import AdminSite
from .models import MyModel

class MyAdminSite(AdminSite):
    site_url = 'https://yourdomain.com'

admin_site = MyAdminSite(name='myadmin')
Run Code Online (Sandbox Code Playgroud)

your_project/urls.py

from django.conf.urls import url
from myapp.admin import admin_site

urlpatterns = [
    url(r'^myadmin/', admin_site.urls),
]
Run Code Online (Sandbox Code Playgroud)

您应该使用自定义管理员注册所有模型,而不是 Django 的默认设置:

from your_app.admin import admin_site
admin_site.register(MyModel)
Run Code Online (Sandbox Code Playgroud)