簡體   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