python web(bottle框架)知行合一之-簡單知識付費平臺-”全棧“實踐(10)---註冊介面...

weixin_33859844發表於2018-04-25

python web(bottle框架)知行合一之-簡單知識付費平臺-”全棧“實踐(10)---註冊介面

PS:筆記只是為了更好表達我怎麼語言表述,有些時候可能難免廢話一推!
因知識有限, 如有錯誤, 歡迎指正!

每日細語:不要辜負了青春的大好時光!

續言

這幾天一直忙著練車應付考試,現在終於過了,心裡的一塊石頭也算暫時的落下了!
回顧前面的幾篇的簡述,我們已經開始接著繼續進行相關服務介面的開發之中,本期主要講解的是註冊介面:

需求分析

當使用者提交相關的帳號和密碼進行註冊的時候,如果發現相關帳號資訊已經被註冊了,那麼提示已註冊,如果沒有則直接的新增一條記錄,並返回提示註冊成功!

需求實現過程:

1:回顧登入介面服務

#!/usr/bin/evn python
# coding=utf-8
# + + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + + ++ + 
"""
Author = zyx
@Create_Time: 2018/4/20 15:27
@version: v1.0.0
@Contact: 308711822@qq.com
@File: login.py
@檔案功能描述: 登入服務介面
"""
from bottle import get, post, request
from base_framework.net import web_helper, session_helper
from business_logic.api_db_logics import user_info_logic
from base_framework.utils import json_helper


@get('/api/v1/user/login/')
@post('/api/v1/user/login/')
def callback():
    '''登入'''

    '''1:獲取使用者提交過來的手機號碼 和 密碼進行驗證 是否已經註冊過-----其實這裡還可以進一步的進行封裝'''

    if request.method.upper() in ('POST', 'PUT', 'DELETE'):
        phone_num = web_helper.get_form('phone_num', '使用者號碼')  # 預設開啟 不能為空的驗證
        pass_word = web_helper.get_form('pass_word', '使用者密碼')  # 預設開啟 不能為空的驗證
    else:
        phone_num = web_helper.get_query('phone_num', '使用者號碼')  # 預設開啟 不能為空的驗證
        pass_word = web_helper.get_query('pass_word', '使用者密碼')  # 預設開啟 不能為空的驗證

    '''2:根據使用者的手機號碼,進行驗證是否已註冊,如果已經註冊的話,那就再判斷密碼是否正確-----其實這裡還可以進一步的進行封裝'''

    u = user_info_logic.check_by_get(phone_num)
    
    if not u:
        return web_helper.return_msg("9999", "親!您還沒有註冊")

    if u.get('pass_word') != pass_word:
        return web_helper.return_msg("9999", "親!您的密碼被狗吃了")

    '''3:寫入相關的session資訊到本地上'''
    s = session_helper.get_session()
    s['phone_num'] = phone_num
    s['pass_word'] = pass_word
    s.save()

    return web_helper.return_msg("0000", "登入成功!")

說明:在登入的介面服務中,我們把相關所有設計的到使用者資訊操作的都放置到了一個叫做user_info_logic.py的邏輯處理模組中.


#!/usr/bin/evn python
# coding=utf-8
"""
Author = zyx
@Create_Time: 2018/4/20 15:57
@version: v1.0.0
@Contact: 308711822@qq.com
@File: user_info_logic.py
@檔案功能描述: 使用者資訊表的一些封裝
"""

from business_logic.db_model.knowledgepay_model import UserInfo, session_scope, model_to_dict, CourseOrder
from base_framework.utils import json_helper


# 檢查手機號碼記錄是否已有記錄
def check_by_get(phone_num=''):
    with session_scope():
        # 說明.get_or_none
        result = UserInfo.get_or_none(UserInfo.phone_num == phone_num)
        if result:
            result = json_helper.class_to_dict(result)
        return result


2:新增註冊服務介面路由:

#!/usr/bin/evn python
# coding=utf-8
"""
Author = zyx
@Create_Time: 2018/4/20 15:27
@version: v1.0.0
@Contact: 308711822@qq.com
@File: register.py
@檔案功能描述: 登入服務介面
"""
from bottle import get, post, request
from base_framework.net import web_helper, session_helper
from business_logic.api_db_logics import user_info_logic
from base_framework.utils import json_helper

@get('/api/v1/user/register/')
@post('/api/v1/user/register/')
def callback():
    '''登入'''

    '''1:獲取使用者提交過來的手機號碼 和 密碼進行驗證 是否已經註冊過-----其實這裡還可以進一步的進行封裝'''

    if request.method.upper() in ('POST', 'PUT', 'DELETE'):
        phone_num = web_helper.get_form('phone_num', '使用者號碼')  # 預設開啟 不能為空的驗證
        pass_word = web_helper.get_form('pass_word', '使用者密碼')  # 預設開啟 不能為空的驗證
    else:
        phone_num = web_helper.get_query('phone_num', '使用者號碼')  # 預設開啟 不能為空的驗證
        pass_word = web_helper.get_query('pass_word', '使用者密碼')  # 預設開啟 不能為空的驗證

    '''2:根據使用者的手機號碼,進行驗證是否已註冊,如果已經註冊的話,那就再判斷密碼是否正確-----其實這裡還可以進一步的進行封裝'''
    result, is_create = user_info_logic.check_or_create(pn=phone_num, pwd=pass_word)
    if not is_create:
        return web_helper.return_msg("9999", "該帳號已經註冊了!")
    return_date = {
        "data": result
    }
    return web_helper.return_msg("0000", "註冊成功!", return_date)

3:在user_info_logic.py的邏輯處理模組中新增一個註冊插入資料庫函式

# 如果已經有了記錄則直接的返回記錄,否則直接的建立的新的記錄
def check_or_create(pn='', pwd=''):
    with session_scope():
        # 說明.get_or_create
        result, is_create = UserInfo.get_or_create(phone_num=pn, pass_word=pwd)
        if result:
            result = json_helper.class_to_dict(result)
            del result['id'];  # 刪除鍵是'id'的條目
        return result, is_create

介面測試:

1789550-c87a4e5aa03a12b6.png
image.png
1789550-3b73511962db61a6.png
image.png

結束

註冊的邏輯其實也很簡單,就是
1:檢視資料庫有沒有此使用者存在
2:沒有使用者就直接插入資料庫一條記錄
3:然後~然後我就結束了這章了!!!

以上筆記純屬個人學習實踐總結,有興趣的同學可以加群一起學習討論QQ:308711822

相關文章