我在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),但看起来它不起作用-只允许相对路径
t2a7ltrp1#
我更喜欢在urls.py中重置admin.site.site_url,沿着其他站点更改(而不是在admin.py文件中执行此操作,因为项目可以具有admin.py)
urls.py
admin.site.site_url
admin.py
# urls.py admin.site.site_url = '' # Removes the 'View Site' link admin.site.site_header = 'My Site'
xdnvmnnf2#
在Django 1.11.5中,似乎是:admin.py文件中的from django.contrib import admin和admin.site.site_url = 'https:....'就足够了
from django.contrib import admin
admin.site.site_url = 'https:....'
mefy6pfw3#
默认情况下,“VIEW SITE”指向'/',即localhost:8000(默认设置)。要更改它,请使用(在www.example.com中admin.py):
admin.site.site_url = "/mySite"
在Django 2.1上测试
1tu0hz3e4#
我有两个解决办法。首先,你可以使用自定义模板admin/base.html。但是,通过阅读默认模板,你将不得不复制粘贴大量代码来更改链接,这似乎有点矫枉过正。另一种解决方案涉及重写AdminSite。AdminSite有一个名为site_url的属性,似乎更改它就可以完成这项工作。因此,本质上,您可以这样做:
admin/base.html
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)
5fjcxozz5#
默认链接为http://127.0.0.1:8000/我们可以通过在admin.py中注册将其更改为自定义url
http://127.0.0.1:8000/
示例: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"
hfyxw5xn6#
在www.example.com中admin.py,按照以下方式提及您的自定义路径
admin.site.site_url = "/<Your Path>"
如果您的自定义URL是像“https://example.com/dashboard”,你必须把下面的线在你的admin.py
admin.site.site_url = "/dashboard"
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"
kxeu7u2r8#
你应该记住,如果你正在设置引用(在模板或.py文件中),它将假设你给了它一个相对组件(/mything变成www.mysite.com/mything)来构建url。如果你想转到一个完全不同的url,你必须包括“https://”并给予完整的url。
/mything
www.mysite.com/mything
8条答案
按热度按时间t2a7ltrp1#
我更喜欢在
urls.py
中重置admin.site.site_url
,沿着其他站点更改(而不是在admin.py
文件中执行此操作,因为项目可以具有admin.py)xdnvmnnf2#
在Django 1.11.5中,似乎是:admin.py文件中的
from django.contrib import admin
和admin.site.site_url = 'https:....'
就足够了mefy6pfw3#
默认情况下,“VIEW SITE”指向'/',即localhost:8000(默认设置)。
要更改它,请使用(在www.example.com中admin.py):
在Django 2.1上测试
1tu0hz3e4#
我有两个解决办法。
首先,你可以使用自定义模板
admin/base.html
。但是,通过阅读默认模板,你将不得不复制粘贴大量代码来更改链接,这似乎有点矫枉过正。另一种解决方案涉及重写
AdminSite
。AdminSite
有一个名为site_url
的属性,似乎更改它就可以完成这项工作。因此,本质上,您可以这样做:your_app/admin.py
your_project/urls.py
你应该使用你的自定义管理员注册你的所有模型,而不是Django的默认管理员:
5fjcxozz5#
默认链接为
http://127.0.0.1:8000/
我们可以通过在admin.py中注册将其更改为自定义url
示例:admin.py
hfyxw5xn6#
在www.example.com中admin.py,按照以下方式提及您的自定义路径
如果您的自定义URL是像“https://example.com/dashboard”,你必须把下面的线在你的admin.py
stszievb7#
您可以通过修改**”www.example.com _url”来修改“VIEW SITE”链接 admin.site.site,默认为**"/"**:
kxeu7u2r8#
你应该记住,如果你正在设置引用(在模板或.py文件中),它将假设你给了它一个相对组件(
/mything
变成www.mysite.com/mything
)来构建url。如果你想转到一个完全不同的url,你必须包括“https://”并给予完整的url。