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

pgvzfuti  于 2023-04-22  发布在  Go
关注(0)|答案(8)|浏览(205)

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

t2a7ltrp

t2a7ltrp1#

我更喜欢在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'
xdnvmnnf

xdnvmnnf2#

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

mefy6pfw

mefy6pfw3#

默认情况下,“VIEW SITE”指向'/',即localhost:8000(默认设置)。
要更改它,请使用(在www.example.com中admin.py):

admin.site.site_url = "/mySite"

在Django 2.1上测试

1tu0hz3e

1tu0hz3e4#

我有两个解决办法。
首先,你可以使用自定义模板admin/base.html。但是,通过阅读默认模板,你将不得不复制粘贴大量代码来更改链接,这似乎有点矫枉过正。
另一种解决方案涉及重写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)
5fjcxozz

5fjcxozz5#

默认链接为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"
hfyxw5xn

hfyxw5xn6#

在www.example.com中admin.py,按照以下方式提及您的自定义路径

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

如果您的自定义URL是像“https://example.com/dashboard”,你必须把下面的线在你的admin.py

admin.site.site_url = "/dashboard"
stszievb

stszievb7#

您可以通过修改**”www.example.com _url”来修改“VIEW SITE”链接 admin.site.site,默认为**"/"**:

from django.contrib import admin

print(admin.site.site_url) # /

admin.site.site_url = "/example"
kxeu7u2r

kxeu7u2r8#

你应该记住,如果你正在设置引用(在模板或.py文件中),它将假设你给了它一个相对组件(/mything变成www.mysite.com/mything)来构建url。如果你想转到一个完全不同的url,你必须包括“https://”并给予完整的url。

相关问题