美文网首页python大法攻略
Django项目(二、后台管理系统的设计)

Django项目(二、后台管理系统的设计)

作者: 眼君 | 来源:发表于2020-09-09 09:01 被阅读0次

    Django有一套自带的后台管理系统, 比如我们可以直接建立超级用户:

    createsuperuser
    

    Django的后台系统默认是英文的, 如果我们想改成中文的, 可以在settings.py里配置:

    #settings.py
    
    ...
    #中文
    LANGUAGE_CODE = 'zh-hans'
    #时区
    TIME_ZONE = 'Asia/Shanghai'
    #使用本地时间
    USE_TZ = False
    

    Django的后台也会需要一些表, 这些表的models一般都是在APP目录下的admin.py进行设计的, 如果我们想把users这个app中设计的user注册到后台, 我们需要在users/admin.py中做如下处理:

    #users/admin.py
    from django.contrib import admin
    
    from .models import UserProfile
    
    
    class UserProfileAdmin(admin.ModelAdmin):
        pass
    
    admin.site.register(UserProfile,UserProfileAdmin)
    

    这样我们的后台页面就多了一张用户表, 而且是有用户扩展信息的。

    引入DjangoUeditor

    为了给我们的文章添加一个富文本编辑器, 我们使用DjangoUeditor, 我们在官网或者git上下载下对应版本的DjangoUeditor后, 在项目目录下新建一个文件夹extra_apps, 将DjangoUeditor文件夹放入该目录下, 在settings.py中进行设置:

    #settings.py
    
    ...
    sys.path.insert(0,os.path.join(BASE_DIR,'extra_apps'))
    INSTALLED_APPS = [
        ...
        'DjangoUeditor',
    ]
    

    另外在urls.py中也需要进行设置:

    #urls.py
    ...
    
    urlpatterns = [
        ...
        url(r'^ueditor/',include('DjangoUeditor.urls')),
    ]
    

    最后, 当需要使用对应的models时需要使用以下设置:

    #models.py
    ...
    from DjangoUeditor.models import UEditorField
    
    class XXmodels(models.Model):
        ...
        content = UEditorField(default='', blank=True, width=1000, imagePath='uploads/blog/images/',filePath='uploads/blog/files/', verbose_name='文章内容')
    

    引入强大的Xadmin

    Xadmin是基于Django的admin扩展我们的后台功能的管理系统,
    安装方式如下:

    pip install xadmin
    

    安装成功后, 我们需要在settings.py中注册两个APP:

    #settings.py
    ...
    INSTALLED_APPS = [
        ...
        'xadmin',
        'crispy_forms'
    ]
    

    之后, 我们需要在urls.py中修改admin的映射关系:

    #urls.py
    from django.conf.urls import url
    from django.contrib import admin
    import xadmin
    
    urlpatterns = [
        url(r'^xadmin/',xadmin.site.urls),
    ]
    

    另外, users/admin.py中也不能用默认的admin的注册方式了:

    #users/admin.py
    from django.contrib import admin
    

    实际上, 我们需要在每个app下新建一个adminx.py文件:

    #users/adminx.py
    
    import xadmin
    from .models import EmailVerifyRecord
    
    class EmailVerifyRecordAdmin(object):
        #后台展示哪些字段, 可以不设置
        list_display = ['code','email']
        #后台在哪些字段中进行搜索
        search_fields = ['']
    
    xadmin.site.register(EmailVerifyRecord,EmailVerifyRecordAdmin)
    

    之后使用makemigrations和migrate同步xadmin的表结构, 之后重启系统就可以。

    Xadmin的一些设置

    xadmin有一些用户可以自定义的设置。

    #users/adminx.py
    ...
    from xadmin import views
    
    #使用主题功能,变更系统配色
    class BaseSetting(object):
        enable_themes = True
        use_bootswatch = True
        
    xadmin.site.register(views.BaseAdminView,BaseSetting)
    
    
    class GlobalSettings(object):
        #修改角标
        site_title = "终极奥义"
        site_footer = "眼君数据"
        #左侧菜单栏收缩
        menu_style = "accordion"
        
    xadmin.site.register(views.CommAdminView,GlobalSettings)
    

    每一个APP都有一个apps.py文件, xadmin可以设置系统中APP的名称:

    #users/apps.py
    from django.apps import AppConfig
    class UserConfig(AppConfig):
        name = 'users'
        verbose_name = '用户信息'
    #users/__init__.py
    default_app_config = "users.apps.UserConfig"
    

    相关文章

      网友评论

        本文标题:Django项目(二、后台管理系统的设计)

        本文链接:https://www.haomeiwen.com/subject/ysljektx.html