Xadmin 改造Django后台

Django-Xadmin使用

我们使用xadmin作为Django框架的后端管理平台

1 安装xadmin

下载xadmin https://github.com/nocmt/Xadmin1.11.x.git

将主目录的xadmin拷贝到extra_apps目录下

加入依赖包,(venv) $ pip freeze > xadmin_requirements.txt (忽略)

vim xadmin_requirements.txt , 加入如下信息:

six
future
httplib2
django-reversion
django-formtools
django-crispy-forms
django-import-export

(venv) $ pip install -r xadmin_requirements.txt

在django中settings.py的注册表INSTALLED_APPS中加入:

'xadmin',
'crispy_forms',

python manage.py makemigrations

python manage.py migrate

在主工程的urls.py 中改动:

#from django.contrib import admin
import xadmin

urlpatterns = [
    #url(r'^admin/', admin.site.urls),
    url(r'^xadmin/', xadmin.site.urls),

在应用app的admin.py中改动

import xadmin
# Register your models here.
#admin.site.register(Tag)
xadmin.site.register(Tag)
xadmin.site.register(Art)

创建超级用户,创建迁移文件,迁移数据到db中,创建超级用户
python manage.py createsuperuser

账号

启动服务,登陆xadmin

2 配置完善xadmin

(1)页面中文展示:

settings.py中配置

#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'

#TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'

USE_TZ = False

(2)在models层的实体类中加入verbose_name

#文章标签
class Tag(models.Model):
    t_name = models.CharField(max_length=50, verbose_name="标签名")
    t_info = models.CharField(max_length=200, verbose_name="标签描述")
    t_addtime = models.DateField(default=timezone.now, db_index=True, verbose_name="添加时间")

    class Meta:
        db_table = "tag"
        verbose_name = "标签"
        verbose_name_plural = verbose_name
        ordering = ["-t_addtime"]


    def __str__(self):
        return self.t_name


class Art(models.Model):
   a_title = models.CharField(max_length=255, verbose_name="文章标题")
   a_info = models.CharField(max_length=500, verbose_name="备注")
   a_content = models.TextField(verbose_name="文章内容")
   a_img = models.ImageField(null=True, blank=True,
                       upload_to="uploads", verbose_name="文章图片")
   a_addtime = models.DateTimeField(default=timezone.now, db_index=True, verbose_name="创建时间")
   a_updatetime = models.DateTimeField(default=timezone.now, verbose_name="更新时间")
   a_tag = models.ForeignKey(Tag)   #a_tag_id


   #python2.7采用的方式
   def __unicode__(self):
      return self.a_title

   #python3.x采用的方式
   def __str__(self):
      return self.a_title


   class Meta:
      ordering = ['-a_addtime']

加上属性字段对应的别名verbose_name, 字段中文展示

(3)在art/admin.py 中添加如下xadmin配置

#coding: utf-8
#from django.contrib import admin

# Register your models here.
from art.models import Tag, Art
import xadmin
from xadmin import views

class BaseSetting(object):
    # 主题修改
    enable_themes = True
    use_bootswatch = True

class GlobalSettings(object):
    #整体配置
    site_title = '美文后台管理系统'
    site_footer = '武汉市创业python项目'
    menu_style = 'accordion'    #菜单折叠


class TagAdmin(object):
   #后台列表显示列
   list_display = ['t_name', 't_info', 't_addtime']
   # 后台列表查询条件
   search_fields = ['t_name', 't_addtime']
   # 后台列表通过时间查询
   list_filter = ['t_name', 't_info', 't_addtime']
   list_per_page = 10


class ArtAdmin(object):
   # 后台列表显示列
   list_display = ['a_title', 'a_info', 'a_content', 'a_img', 'a_addtime', 'a_updatetime']
   # 后台列表查询条件
   search_fields = ['a_title', 'a_info', 'a_content']
   # 后台列表通过时间查询
   list_filter = ['a_title', 'a_info', 'a_content', 'a_addtime']
   list_per_page = 20


xadmin.site.register(views.CommAdminView, GlobalSettings)
xadmin.site.register(views.BaseAdminView, BaseSetting)

xadmin.site.register(Tag, TagAdmin)
xadmin.site.register(Art, ArtAdmin)

#admin.site.register(Tag)
#admin.site.register(Art)

(3)修改应用目录下的apps.py文件

from django.apps import AppConfig


class ArtConfig(AppConfig):
    name = 'art'
    verbose_name = '美文信息管理'    #应用art对应的中文名称

(4)在应用的init.py文件中加入

default_app_config = "art.apps.ArtConfig"

(5)启动web服务,在后端访问

http://127.0.0.1:8000/xadmin

猜你喜欢

转载自blog.csdn.net/qq_42803940/article/details/81223341