Django 中自定义 Admin 样式的实现?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
settings.py
LANGUAGE_CODE = 'zh-hans'
修改结果
应用/apps.py
from django.apps import AppConfig class BbssConfig(AppConfig): name = 'bbs' # 添加下面这句 verbose_name = 'BBS系统'
修改结果
应用/models.py
class Comment(models.Model): topic = models.ForeignKey(Topic, on_delete=models.CASCADE) comment_text = models.TextField(max_length=2000) author = models.ForeignKey(User, default=1, on_delete=models.CASCADE) picture = models.FileField(blank=True, null=True) # 添加文件类型字段,并默认为空 pub_date = models.DateTimeField(auto_now_add=True) def get_comment_text_md(self): """将markdown格式转化为html""" return mark_safe(markdown(self.comment_text)) def __str__(self): return self.comment_text class Meta: verbose_name = '评论' # 单数时显示内容 verbose_name_plural = '评论' # 复数时显示内容
默认数据库表在后台中显示都为复数形式,而中文没有复数形式,因此将两种形式都设置为相同名称
修改结果
应用/models.py
class Comment(models.Model): topic = models.ForeignKey(Topic, on_delete=models.CASCADE, verbose_name='话题') comment_text = models.TextField('评价内容', max_length=2000) author = models.ForeignKey(User, default=1, on_delete=models.CASCADE, verbose_name='用户') picture = models.FileField('图片', blank=True, null=True) # 添加文件类型字段,并默认为空 pub_date = models.DateTimeField('发布时间', auto_now_add=True) def get_comment_text_md(self): """将markdown格式转化为html""" return mark_safe(markdown(self.comment_text)) def __str__(self): return self.comment_text class Meta: verbose_name = '评论' # 单数时显示内容 verbose_name_plural = '评论' # 复数时显示内容
一般的字段只需加个显示名称的位置参数就可以,而一对多关系的要指定关键字参数 verbose_name
,并且关键字参数要放在位置参数后面
修改结果
使用 django-grappelli 第三方应用进行修改admin样式
GitHub:https://github.com/sehmaschine/django-grappelli
文档:https://django-grappelli.readthedocs.io/en/latest/quickstart.html
其他工具:https://djangopackages.org/grids/g/admin-interface/
pip install django-grappelli
settings.py
INSTALLED_APPS = [ 'accounts.apps.AccountsConfig', 'polls.apps.PollsConfig', 'bbs.apps.BbssConfig', 'grappelli', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
项目 / urls.py
urlpatterns = [ path('grappelli', include('grappelli.urls')), path('admin/', admin.site.urls), path('', include('bbs.urls')), path('accounts/', include('accounts.urls')), ]
2.4 收集静态文件统一放到一个地方
settings.py 中添加
# 收集静态文件统一存放的根路径 STATIC_ROOT = os.path.join(BASE_DIR, 'static-files')
执行命令
python manage.py collectstatic
自动生成
再次启动服务会发现管理页面已经被修改
settings.py 中添加
# 后台自定义标题 GRAPPELLI_ADMIN_TITLE = 'Z-BBS ADMIN'
刷新页面
2.6 admin开启分页功能
应用 / admin.py
from django.contrib import admin # Register your models here. from .models import Topic, Comment class TopicAdmin(admin.ModelAdmin): list_display = ('topic_text', 'author', 'pub_date') search_fields = ('topic_text', 'author') list_editable = ('author',) list_per_page = 10 class CommentAdmin(admin.ModelAdmin): list_display = ( 'comment_text', 'author', 'pub_date', 'topic') search_fields = ('comment_text', 'author') list_editable = ('author',) list_per_page = 10
应用 / admin.py
class TopicAdmin(admin.ModelAdmin): list_display = ('topic_text', 'author', 'pub_date') list_filter = ('topic_text', 'author', 'pub_date') search_fields = ('topic_text',) list_editable = ('author',) list_per_page = 10 class CommentAdmin(admin.ModelAdmin): list_display = ( 'comment_text', 'author', 'pub_date', 'topic') list_filter = ('comment_text', 'author', 'pub_date', 'topic') search_fields = ('comment_text',) list_editable = ('author',) list_per_page = 10
开启之后记得强制刷新页面(ctrl + shift + r),重新加载 js 和 css 代码
看完上述内容,你们掌握Django 中自定义 Admin 样式的实现的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。