1.新建環(huán)境
2.配置mysql
3.運(yùn)行manage.py makemaigrations,migrate 生成數(shù)據(jù)表
4.創(chuàng)建users app
5.定義users moudles
6.在users moudles中用到了image赘娄,需要pillow磅叛,所以pip安裝它
7.把users注冊(cè)到INSTALLED_APPS,并在settings中重載方法AUTH_USER_MODEL = 'users.UserProfile'
8.makemigrations users,migrate users
9.startapp courses 龄毡,給moudels增添內(nèi)容
10.startapp organization纪吮,給moudels增添內(nèi)容
- startapp operation荒勇,給moudels增添內(nèi)容
12.注冊(cè) 'courses','organization','operation'
13.makemigrations,migrate
14.創(chuàng)建apps python package盼砍,并把四個(gè)app拖動(dòng)到這里面來(lái)
15.把a(bǔ)pps mark 為source root
16.把a(bǔ)pps 增加到搜索目錄下 sys.path.insert(0,os.path.join(BASE_DIR,'apps'))
17.在cmd下測(cè)試是否可正常運(yùn)行 python manage.py runserver 0.0.0.0:8000
后臺(tái)管理系統(tǒng)
特點(diǎn)
1.權(quán)限管理
2.少前端樣式
3.快速開(kāi)發(fā)
1.新建超級(jí)用戶 createsuperuser
jeff
admin123
2.修改語(yǔ)言時(shí)區(qū) 存儲(chǔ)時(shí)間(修改為False后再數(shù)據(jù)庫(kù)保存數(shù)據(jù)時(shí)就為本地時(shí)間尘吗,否則為UTC時(shí)間
settings-LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Shanghai' USE_TZ = False
3.將UserProfile注冊(cè)進(jìn)admin管理后臺(tái)users-admin.py,并寫(xiě)一個(gè)管理器UserProfileAdmin
from .models import UserProfile
class UserProfileAdmin(admin.ModelAdmin):
pass
admin.site.register(UserProfile, UserProfileAdmin)
- 在settings中添加以下內(nèi)容,以修復(fù)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注冊(cè)'xadmin','crispy_forms'
- 把默認(rèn)的admin指向xadmin浇坐,urls.py 這樣就完成了admin的替換
- 注銷掉原來(lái)users-admin.py中的admin注冊(cè)方式
- 把a(bǔ)dmin中的表同步過(guò)來(lái) makemigrations
- 下載xadmin源碼摇予,在項(xiàng)目根目錄下創(chuàng)建文件夾extra_apps,把下載的源碼中xadmin文件夾放進(jìn)去
再把extra_apps mark為source root - 卸載xadmin pip uninstall xadmin
- 發(fā)生ImportError: No module named xadmin吗跋,把extra_apps 增加到搜索目錄下
users app的moudel注冊(cè)
- xadmin會(huì)自動(dòng)搜尋每個(gè)app下adminx文件
- 所以在users下新建adminx.py文件侧戴,將EmailVerifyRecordAdmin注冊(cè)進(jìn)users-adminx.py
- 在測(cè)試添加郵箱驗(yàn)證碼時(shí)IndexError at /xadmin/users/emailverifyrecord/add/
- 重載EmailVerifyRecord unicode方法
- 在郵箱驗(yàn)證碼中自定義顯示的列,修改注冊(cè)的users-adminx.py EmailVerifyRecordAdmin
list_display = ['code', 'email', 'send_type', 'send_time'] - 增加查找功能search_fields = ['code', 'email']
- 增加過(guò)濾器功能list_filter=['code', 'email', 'send_type', 'send_time']
將各個(gè)moudel注冊(cè)到xadmin中
- 在courses下新建adminx跌宛,把各moudle注冊(cè)到xadmin中
- 指定搜索外鍵的字段酗宋,在名稱中添加雙下劃線,course__name
- 重復(fù)以上操作把各個(gè)moudel加進(jìn)來(lái)
管理面板收起app導(dǎo)航欄疆拘,添加主題蜕猫,全局配置名稱
- 在users-adminx.py中添加
class BaseSetting(object):
enable_themes = True
use_bootswatch = True
class GlobalSetting(object):
site_title = '幕學(xué)后臺(tái)管理系統(tǒng)'
site_footer = '幕學(xué)在線網(wǎng)'
menu_style = 'accordion'
app名稱改為中文
- 在apps下的每個(gè)app中apps.py文件中添加中文名稱
- 把init加上引用。
在每個(gè)app init.py 添加變量default_app_config
第六章
- 在根目錄下新建static文件夾哎迄,將靜態(tài)文件復(fù)制到此目錄下
- 在urls中配置回右,以處理靜態(tài)文件
- 在settings中添加靜態(tài)文件存放路徑隆圆,修改index.html中css,js引用路徑
- 將login頁(yè)面添加到urls中翔烁,注意根目錄下的文件如login前不需要加/
用戶登錄
- users-views.py 添加login登錄邏輯
- 默認(rèn)方式為用戶名登錄渺氧,添加郵箱登錄方式
在settings重載變量
AUTHENTICATION_BACKENDS = (
'users.views.CustomBackend',
)
并在views中定義CustomBackend
session 和cookie
用戶注冊(cè)
- 在views定義注冊(cè)RedisterView,在urls中設(shè)置RedisterView
- 把注冊(cè)頁(yè)面放到根目錄下
- 修改 register.html 中css js的引用路徑
例如../css/login.css 修改為{% static 'css/login.css' %}
這樣會(huì)根據(jù)settings中的配置STATIC_URL = '/static/'自動(dòng)配置蹬屹,
以后變更地址就只需修改STATIC_URL - 在虛擬環(huán)境中安裝注冊(cè)碼插件 captcha
- 按照captcha 說(shuō)明進(jìn)行配置
- makemigrations migrate
用戶注冊(cè)
- 驗(yàn)證輸入
取出用戶名侣背,密碼 - 實(shí)例化UserProfile
- 給UserProfile的實(shí)例賦值username,email
- 密碼加密
- 保存進(jìn)數(shù)據(jù)庫(kù)
給郵箱發(fā)送激活鏈接
1.在apps下新建package utils慨默,用來(lái)存放郵箱驗(yàn)證模塊 - 定義send_register_email
在鏈接里加上后臺(tái)生成的隨機(jī)字符串
用戶在點(diǎn)擊鏈接時(shí)贩耐,把加上的隨機(jī)字符串取出來(lái)
然后在數(shù)據(jù)庫(kù)中去查詢,存在就激活厦取,不存在就報(bào)錯(cuò) - 處理用戶激活
4.判斷注冊(cè)郵箱是否已存在
找回密碼
詳情頁(yè)
https://github.com/xinghezhao/MxOnline.git
https://github.com/xinghezhao/MxOnline.git
總結(jié)
- 使用xadmin代替admin做為后臺(tái)管理系統(tǒng)
- 登錄潮太,注冊(cè),找回密碼
- 課程機(jī)構(gòu)功能:機(jī)構(gòu)列表虾攻,機(jī)構(gòu)詳情頁(yè)消别,咨詢提交
- 課程功能:課程列表,課程詳情頁(yè)
- 講師:講師列表台谢,講師詳情頁(yè)
- 個(gè)人中心功能: 用戶學(xué)信息修改寻狂,全局搜索
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'