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

时间:2016-11-24 08:34:26

标签: 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),但看起来它不起作用 - 只允许相对路径

5 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:5)

我更喜欢在admin.site.site_url中重置urls.py,以及其他站点更改(而不是在admin.py文件中进行重置,因为项目可以具有服务器admin.py)

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

答案 2 :(得分:3)

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

首先,您可以使用自定义模板admin/base.html。但是,通过阅读默认模板,您只需复制粘贴大量代码即可更改链接,这似乎有点过头了。

另一种解决方案涉及overriding AdminSiteAdminSite有一个名为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)

答案 3 :(得分:2)

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

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

admin.site.site_url = "/mySite"

在Django 2.1上测试

答案 4 :(得分:0)

指向查看网站的默认链接为http://127.0.0.1:8000/

我们可以通过在 admin.py

中注册将其更改为自定义网址
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"