1.新建环境
2.配置mysql
3.运行manage.py makemaigrations,migrate 生成数据表
4.创建users app
5.定义users moudles
6.在users moudles中用到了image,需要pillow,所以pip安装它
7.把users注册到INSTALLED_APPS,并在settings中重载方法AUTH_USER_MODEL = 'users.UserProfile'
8.makemigrations users,migrate users
9.startapp courses ,给moudels增添内容
10.startapp organization,给moudels增添内容
- startapp operation,给moudels增添内容
12.注册 'courses','organization','operation'
13.makemigrations,migrate
14.创建apps python package,并把四个app拖动到这里面来
15.把apps mark 为source root
16.把apps 增加到搜索目录下 sys.path.insert(0,os.path.join(BASE_DIR,'apps'))
17.在cmd下测试是否可正常运行 python manage.py runserver 0.0.0.0:8000
后台管理系统
特点
1.权限管理
2.少前端样式
3.快速开发
1.新建超级用户 createsuperuser
jeff
admin123
2.修改语言时区 存储时间(修改为False后再数据库保存数据时就为本地时间,否则为UTC时间
settings-LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Shanghai' USE_TZ = False
3.将UserProfile注册进admin管理后台users-admin.py,并写一个管理器UserProfileAdmin
from .models import UserProfile
class UserProfileAdmin(admin.ModelAdmin):
pass
admin.site.register(UserProfile, UserProfileAdmin)
- 在settings中添加以下内容,以修复1452, 'Cannot add or update a child row:
a foreign key constraint fails
DATABASES = {
'default': {
...
"init_command": "SET foreign_key_checks = 0;",
},
}
添加xadmin
- pip install xadmin
- 在settings注册'xadmin','crispy_forms'
- 把默认的admin指向xadmin,urls.py 这样就完成了admin的替换
- 注销掉原来users-admin.py中的admin注册方式
- 把admin中的表同步过来 makemigrations
- 下载xadmin源码,在项目根目录下创建文件夹extra_apps,把下载的源码中xadmin文件夹放进去
再把extra_apps mark为source root - 卸载xadmin pip uninstall xadmin
- 发生ImportError: No module named xadmin,把extra_apps 增加到搜索目录下
users app的moudel注册
- xadmin会自动搜寻每个app下adminx文件
- 所以在users下新建adminx.py文件,将EmailVerifyRecordAdmin注册进users-adminx.py
- 在测试添加邮箱验证码时IndexError at /xadmin/users/emailverifyrecord/add/
- 重载EmailVerifyRecord unicode方法
- 在邮箱验证码中自定义显示的列,修改注册的users-adminx.py EmailVerifyRecordAdmin
list_display = ['code', 'email', 'send_type', 'send_time'] - 增加查找功能search_fields = ['code', 'email']
- 增加过滤器功能list_filter=['code', 'email', 'send_type', 'send_time']
将各个moudel注册到xadmin中
- 在courses下新建adminx,把各moudle注册到xadmin中
- 指定搜索外键的字段,在名称中添加双下划线,course__name
- 重复以上操作把各个moudel加进来
管理面板收起app导航栏,添加主题,全局配置名称
- 在users-adminx.py中添加
class BaseSetting(object):
enable_themes = True
use_bootswatch = True
class GlobalSetting(object):
site_title = '幕学后台管理系统'
site_footer = '幕学在线网'
menu_style = 'accordion'
app名称改为中文
- 在apps下的每个app中apps.py文件中添加中文名称
- 把init加上引用。
在每个app init.py 添加变量default_app_config
第六章
- 在根目录下新建static文件夹,将静态文件复制到此目录下
- 在urls中配置,以处理静态文件
- 在settings中添加静态文件存放路径,修改index.html中css,js引用路径
- 将login页面添加到urls中,注意根目录下的文件如login前不需要加/
用户登录
- users-views.py 添加login登录逻辑
- 默认方式为用户名登录,添加邮箱登录方式
在settings重载变量
AUTHENTICATION_BACKENDS = (
'users.views.CustomBackend',
)
并在views中定义CustomBackend
session 和cookie
用户注册
- 在views定义注册RedisterView,在urls中设置RedisterView
- 把注册页面放到根目录下
- 修改 register.html 中css js的引用路径
例如../css/login.css 修改为{% static 'css/login.css' %}
这样会根据settings中的配置STATIC_URL = '/static/'自动配置,
以后变更地址就只需修改STATIC_URL - 在虚拟环境中安装注册码插件 captcha
- 按照captcha 说明进行配置
- makemigrations migrate
用户注册
- 验证输入
取出用户名,密码 - 实例化UserProfile
- 给UserProfile的实例赋值username,email
- 密码加密
- 保存进数据库
给邮箱发送激活链接
1.在apps下新建package utils,用来存放邮箱验证模块 - 定义send_register_email
在链接里加上后台生成的随机字符串
用户在点击链接时,把加上的随机字符串取出来
然后在数据库中去查询,存在就激活,不存在就报错 - 处理用户激活
4.判断注册邮箱是否已存在
找回密码
详情页
https://github.com/xinghezhao/MxOnline.git
https://github.com/xinghezhao/MxOnline.git
总结
- 使用xadmin代替admin做为后台管理系统
- 登录,注册,找回密码
- 课程机构功能:机构列表,机构详情页,咨询提交
- 课程功能:课程列表,课程详情页
- 讲师:讲师列表,讲师详情页
- 个人中心功能: 用户学信息修改,全局搜索
pythonanywhere superuser jeff 120880127p
EMAIL_HOST = 'smtp.sina.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'djangomuke@sina.com'
EMAIL_HOST_PASSWORD = '120880127s'
EMAIL_USE_TLS = False
EMAIL_FROM = 'djangomuke@sina.com'
EMAIL_HOST = "smtp.gmail.com"
EMAIL_HOST_USER = "Jeff.xxnn@gmail.com"
EMAIL_HOST_PASSWORD = 'mvcwrcnovxdfakeq'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_FROM = 'Jeff.xxnn@gmail.com'