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