繁体   English   中英

如何更改 django 管理员“查看站点”链接到自定义绝对 url

[英]How to change django admin "view site" link to custom absolute url

我有 REST API 建立在 Django 和 JS 应用程序上。 两者都在不同的域上。 如何以这种方式更改 django 管理员“查看站点”链接以便打开 JS 应用程序? 我试图传递绝对链接( https://docs.djangoproject.com/es/1.10/ref/contrib/admin/#django.contrib.admin.AdminSite.site_url ),但看起来它不起作用 - 只有允许的相对路径

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

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

# urls.py
admin.site.site_url = ''  # Removes the 'View Site' link
admin.site.site_header = 'My Site'

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

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

admin.site.site_url = "/mySite"

在 Django 2.1 上测试

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

首先,您可以使用自定义模板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')

your_project/urls.py

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

urlpatterns = [
    url(r'^myadmin/', admin_site.urls),
]

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

from your_app.admin import admin_site
admin_site.register(MyModel)

默认链接到 viewsite 是http://127.0.0.1:8000/

我们可以通过在admin.py 中注册来将其更改为自定义 url

admin.site.site_url = "/mySite"

示例:admin.py

from django.contrib import admin
from auth_app.models import profile
# Register your models here.
admin.site.register(profile)
#register link
admin.site.site_url = "/mySite"

在 admin.py 中,提及您的自定义路径,如下所示

admin.site.site_url = "/<Your Path>"

如果您的自定义 url 类似于“https://example.com/dashboard”,您必须在 admin.py 中添加以下行

admin.site.site_url = "/dashboard"

您可以通过更改默认为“/”“admin.site.site_url”来更改“查看站点”链接

from django.contrib import admin

print(admin.site.site_url) # /

admin.site.site_url = "/example"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM