如何将 django admin“查看站点”链接更改为自定义绝对网址

问题描述 投票:0回答:9

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

python python-3.x django rest django-admin
9个回答
19
投票

我更喜欢在

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

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

16
投票

在 Django 1.11.5 中,似乎:

from django.contrib import admin
admin.site.site_url = 'https:....'
admin.py文件中就足够了


11
投票

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

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

admin.site.site_url = "/mySite"

在 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')

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
投票

查看网站的默认链接是

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"

0
投票

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

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

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

admin.site.site_url = "/dashboard"

0
投票

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

from django.contrib import admin

print(admin.site.site_url) # /

admin.site.site_url = "/example"

0
投票

您应该记住,如果您设置引用(在模板或 .py 文件中),它将构建 url,假设您给了它一个相对组件(

/mything
变为
www.mysite.com/mything
)。如果您想访问完全不同的网址,则必须包含“https://”并提供完整的网址。


0
投票

reverse
不适用于 url 路由,您可以这样配置:

from django.urls import include, path, reverse_lazy

admin.site.site_header = "MyAdmin"
admin.site.site_title = "MyAdmin"
admin.site.index_title = "MyAdmin Panel"
admin.site.site_url = reverse_lazy('dashboard:home')
© www.soinside.com 2019 - 2024. All rights reserved.