由于安装时需要依赖包并且暂时不支持py3等原因,直接pip install的方法很容易就狗带了。

  说一下我在网上找到的安装方式,在GitHub上有这个项目的开源代码,并且还有很多个版本可以选择。

py3.6 + xadmin的自学网站搭建

  克隆一份,clone地址:xadmin,新建一个空白的README.rst代替之前的文件。

py3.6 + xadmin的自学网站搭建

  cmd进入dos,执行python setup.py  install,出现gbk解码问题,返回上一步确定README.rst是一个空白文件。这样安装xadmin就完成了。

狸猫换太子

  算了还是叫太子换狸猫吧,admin文档太少用起来还不如自己写的后台管理,用xadmin更换django自带的admin,安装xadmin的过程与写一个app分支的过程一致。这里我简述一下步骤。

  第一步,创建一个文件包放置xadmin的app,并且将app注册在settings.py文件中。

py3.6 + xadmin的自学网站搭建

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
    'xadmin',
    'crispy_forms',#必须要注册这两个app
]

   第二步修改url,用xadmin代替admin。

from django_extra import xadmin
from blog import views
urlpatterns = [
    # url(r'^admin/', admin.site.urls),
    url(r'^xadmin/', xadmin.site.urls),
    url(r'^index/', views.index ),
]

py3.6 + xadmin的自学网站搭建

  这里提醒一下,如果你之前创建好了数据库,在这里使用xadmin之前需要同步一下数据库的相关数据,就是:

python manage.py makemigrations
python manage.py migrate

  当然你还需要创建后台管理的超级管理员。

python manage.py createsuperuser

  当然你觉得英文界面可能对你不够友好,在settings里进行配置,设置为中文,这个与admin操作一致:

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False

   当然我们可以让后台搭建的好看一点:

class BaseSetting:
    '''
    增加主题样式
    '''
    enable_themes = True
    use_bootswatch = True


class GlobalSetting(object):
    '''
    修改标题

    '''
    site_title = "jeff后台管理系统"
    site_footer = "http://www.cnblogs.com/Jeffding/"
    menu_style = "accordion"#下拉框收起来

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

py3.6 + xadmin的自学网站搭建

  后台管理的搭建非常迅速,也非常好用,django的后台管理是根据数据表的管理,所以适用于大多数情况,给我们开发带来了便利。

登陆注册

  为了使用django后台自带的认证与登陆,所以我们的用户表最好还是继承它的用户表比较好,这样我们登录认证和session写入django都帮我们做好了,所以别人做好的东西,当然是拿来用啦。

py3.6 + xadmin的自学网站搭建

py3.6 + xadmin的自学网站搭建

  所以我们需要重写user模型。

   第一步,修改settings.py配置文件,覆盖默认的user模型:

AUTH_USER_MODEL = "users.UserInfo"
class UserInfo(AbstractUser):
    """
    用户表
    """
    nickname = models.CharField(verbose_name='昵称', max_length=32)
    address = models.CharField(verbose_name='地址', max_length=100)
    cellphone_number = models.CharField(verbose_name='手机号', max_length=11)
    birthday = models.DateField(verbose_name='生日', null=True, blank=True,)
    avatar = models.ImageField(verbose_name='头像', upload_to='static/imgs/%Y/%m',default='static/imgs/default.png')
    create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
    sex_choices = [
        ("male", ""),
        ("female", ""),
    ]
    sex = models.CharField(choices=sex_choices, default='male', verbose_name='性别', max_length=6)

    class Meta:
        verbose_name = '用户信息'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.username
重写model

相关文章: