[英]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 admin
和admin.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.