相关文章推荐
捣蛋的针织衫  ·  FFMPEG结构体分析 ...·  4 周前    · 
想旅行的双杠  ·  Spring Boot Actuator ...·  2 月前    · 

如何将django管理员的 "查看网站 "链接改为自定义绝对网址

21 人关注

我有建立在Django上的REST API和JS应用程序。两者都在不同的域中。如何改变Django管理员的 "查看网站 "链接,使其能够打开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
Dmitrijs Zubriks
Dmitrijs Zubriks
发布于 2016-11-24
7 个回答
HamzDiou
HamzDiou
发布于 2022-08-13
已采纳
0 人赞同

在Django 1.11.5中,似乎: from django.contrib import admin 和 中的 admin.site.site_url = 'https:....' admin.py file is enough

mrts
请注意,将 admin.site.site_url 设置为 None 会完全删除链接--这在某些场合可能是有用的。
djvg
以下是最新的情况 docs 有关于它的说法。
Nitin Nain
Nitin Nain
发布于 2022-08-13
0 人赞同

我更喜欢在 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'
    
这是很巧妙的,我用它来定制额外的管理界面组件。 admin.site.site_title = "Company Title" admin.site.index_title = "Administration Portal" 等。
如果你想删除 "查看网站 "链接,我建议使用 admin.site.site_url = "" ,而不是将变量设置为 None ,因为它的目的是被分配一个字符串值,如果你使用 mypy ,会把它搞乱。
我的项目是在反向代理后面运行的,所以我更新了project/urls.py,加入了以下一行。 admin.site.site_url = f'/{settings.URL_PREFIX}' URL_PREFIX='project-name' 是在settings.py中定义的。
Arindam Roychowdhury
Arindam Roychowdhury
发布于 2022-08-13
0 人赞同

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

要改变它,使用(在admin.py)。

admin.site.site_url = "/mySite"

在Django 2.1上测试

你在哪里添加这个设置?
@jewles...在admin.py中
0 人赞同

我能想到的解决方案有两个。

首先,你可以使用自定义模板 admin/base.html 。但是,通过阅读默认模板,你将不得不复制粘贴大量的代码只是为了改变一个链接,这似乎是一种矫枉过正。

另一个解决方案涉及 overriding AdminSite .替换代码1】有一个叫做 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)
    
Tono Kuriakose
Tono Kuriakose
发布于 2022-08-13
0 人赞同

查看网站的默认链接是 http://127.0.0.1:8000/

我们可以通过在以下文件中注册,将其改为自定义网址 admin.py

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"
    
Rabeul Hasan
Rabeul Hasan
发布于 2022-08-13
0 人赞同

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

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

如果你的自定义网址是 "https://example.com/dashboard",你必须在你的admin.py中加入以下一行

admin.site.site_url = "/dashboard"
    
Kai - Kazuya Ito
Kai - Kazuya Ito
发布于 2022-08-13
0 人赞同

你可以改变 "VIEW SITE" link 通过改变 "admin.site.site_url" which is "/" 默认情况下是这样。

from django.contrib import admin