如何将Django中的管理端网站变得好看又与众不同
要使Django的管理员网站变得好看又与众不同,可以通过以下几个步骤实现:
使用自定义的CSS:
在Django的任何admin应用下的
static/admin/
目录中创建一个css
文件,然后在该目录下的admin
文件夹中的base_site.py
文件中引入这个CSS文件。
class MyAdminSite(admin.AdminSite):
site_header = 'My Custom Admin Site' # 自定义头部
site_title = 'My Admin' # 自定义标题
def get_urls(self):
from django.urls import path
from django.contrib.admin.views.login import login_view
urlpatterns = super().get_urls()
urlpatterns += [
path('login/', self.admin_view(login_view), name='login'),
]
return urlpatterns
def admin_view(self, view, cacheable=False):
"""
Decorator to set properties for admin views.
"""
# We'd need to change this to work with more complex view functions.
def inner(request, *args, **kwargs):
if not self.has_permission(request):
if not self.login_form_class:
raise Http404('No login form')
return login_view(request, self.login_template or 'admin/login.html', {
'title': self.login_title or _('Log in'),
'app_name': 'admin',
'username': request.GET.get('username'),
'site_header': self.site_header,
'site_title': self.site_title,
})
return view(request, *args, **kwargs)
if cacheable:
inner = cache_page(CACHE_MIDDLEWARE_SECONDS)(inner)
# We add 'admin:%s_%s' % (app_label, opts.model_name) in the view's
# 'adminsite_permission_flag_cache' attribute for checking permissions.
inner.adminsite_permission_flag_cache = '%s_%s' % (
self.name,
view.func.admin_site_permission_flag,
)
return update_wrapper(inner, view)
admin.site = MyAdminSite()
使用自定义的JavaScript:
同样,在
static/admin/
目录下创建一个js
文件,并在base_site.py
中引入。使用自定义的Admin模板:
在
templates/admin/
目录下创建自定义的模板,然后在base_site.py
中通过admin.AdminSite.add_template_options
方法添加自定义模板。使用第三方库:
可以使用如
django-jet
或django-cms
这样的第三方库来提供更丰富的管理员界面。使用主题:
可以使用如
Bootstrap
这样的CSS框架来创建一个现代化的管理员界面。使用Admin界面扩展:
可以通过扩展内置的模型管理器类(如
ModelAdmin
)来增加额外的功
评论已关闭