1、安装mysqlclint,可能会报错,在https://www.lfd.uci.edu/~gohlke/pythonlibs/上找到对应安装包下载之后安装;
1、配置setting中的数据库:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'kefu',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1'
}
}
2、新建数据库
选择utf8,排序方式选择genuarl_ci
3、生成自带数据表
新建user app
tools-run manage.py-makemigration-migrate-startapp name
4、自定义user表
自定义用户表中的字段:
from django.db import models
from django.contrib.auth.models import AbstractUser # 用于自定义user表
class UserProfile(AbstractUser):
nick_name = models.CharField(max_length=50, verbose_name='昵称', default='')
class Meta:
verbose_name = '用户信息'
verbose_name_plural = verbose_name
def __str__(self):
return self.username
进行最后一步migrate的时候可能会报错:
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency users.0001_initial on database 'default'.
解决方案:删除除了user_auth之外的所有表,再重新运行。
5、把多个app放在apps文件夹之下,同时对apps做sourceroot操作,避免之前的引用失效。
6、把apps加入到搜索目录之下
import sys
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
1、建立超级用户
tools-run manege.py tesc-createsuperuser
创建完成之后,要记得再做一次makemigrations和migrate,来更改数据库,使新建的用户信息生效,否则,当你登录的时候会出现如下错误:
django.db.utils.ProgrammingError: (1146, "Table 'kefu.django_session' doesn't exist")
2、把后台管理系统设置成中文界面
在sitting中设置:
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
3、把用户信息表userprofile注册到组当中
在users.admin中:
from django.contrib import admin
from .models import UserProfile
class UserProfileAdmin(admin.ModelAdmin):
pass
admin.site.register(UserProfile, UserProfileAdmin) # 关联注册
4、安装xadmin
可以直接使用pip install xadmin,但是会报错,报错的话可以参考这篇文章:
报错解决方案
安装之后,在setting-app中加入最后两个:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'users',
'xadmin',
'crispy_forms',
]
之后修改url,再做一次migrate:
import xadmin
urlpatterns = [
url(r'^xadmin/', xadmin.site.urls),
]
通过源码安装方式:
github下载zip文件,解压之后复制xadmin文件到代码主目录之下,然后新建extra_apps用来存放这种第三方的源码包,之后再做一次sourceroot,然后就可以删掉之前用pip安装的xadmin了:
pip unstall xadmin
5、切记一点要配置setting
import os
import sys
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))
每一次新建了一个pakeg之后,做了source root之后,还要做这一步操作,要不然运行manage.py的时候就会出现:
not found module xadmin
1、使用run manage.py-startapp
2、创建model
class Shop(models.Model):
name = models.CharField(max_length=50, verbose_name='店铺名称',default='')
desc = models.CharField(max_length=300, verbose_name='店铺描述',default='')
image = models.ImageField(upload_to='kefuaccount/%Y/%m', verbose_name='店铺logo',default='')
class Meta:
verbose_name = '店铺'
verbose_name_plural = verbose_name
3、把app加入到setting中的app列表中
# 每一个新建的app都要在这里注册
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'users',
'xadmin',
'crispy_forms',
'kefuaccount',
]
4、运行makemigration、migrate
from .models import Shop, Account, SpiderRecord
import xadmin
class ShopAdemin(object):
list_display = ['name', 'desc'] # 设置显示数据表中的所有字段
search_fields = ['name', 'desc'] # 设置搜索字段
list_fields = ['name', 'desc'] # 设置筛选字段
xadmin.site.register(Shop, ShopAdemin)
1、更改标题,页面底部,伸缩栏
在users-adminx中
from xadmin import views
class GlobalSettings(object):
site_title = '客服数据管理系统'
site_footer = '丽人丽妆'
menu_style = 'accordion'
xadmin.site.register(views.CommAdminView, GlobalSettings)
2、设置伸缩栏标题为中文
在每个app的apps中新增verbose_name:
class UsersConfig(AppConfig):
name = 'users'
verbose_name = '用户'
接着再_init_文件中增加一行:
default_app_config = 'users.apps.UsersConfig'
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
from django.views.generic import TemplateView
urlpatterns = [
url(r'^xadmin/', xadmin.site.urls),
url('^$', TemplateView.as_view(template_name='index.html'), name='index'),
url('^login/$', TemplateView.as_view(template_name='login.html'), name='login'),
]
然后更改html中静态文件的配置