用戶注冊案例(views寫法)驗(yàn)證碼

一、驗(yàn)證碼

準(zhǔn)備工作分別需要兩個文集一個是check_code.py文件,一個是Monaco.ttf字體文件
驗(yàn)證碼的思路,利用htmlsrc屬性直接可以讀取對應(yīng)的連接展示在頁面上,所以單獨(dú)把驗(yàn)證碼寫成一個連接請求用來返回

  • 引入BytesIO 將驗(yàn)證碼圖片保存在內(nèi)存環(huán)境,這樣就不需要實(shí)體化的目錄文件
  • request.session['CheckCode'] = code 將驗(yàn)證碼對應(yīng)的鍵值對保存在session中
from io import BytesIO
#驗(yàn)證碼
def check_code(request):
    stream = BytesIO()
    img,code = create_validate_code()
    img.save(stream,'PNG')
    request.session['CheckCode'] = code
    return HttpResponse(stream.getvalue())

二、注冊的邏輯

  • 頁面請求首先是get方法,我們把我們的寫好的form返回到頁面
  • psot請求的時候采用ajax時,要提前寫好封裝的字典用來保存
  • is_valid() 是用來判斷字段是否通過了form的過濾
  • cleaned_data 是用來接受判斷通過的字典
  • 如果沒有通過第三步
  • 那么所有的錯誤信息都封裝在obj_regiser = account.accountform(request,request.POST)
def register(request):
    if request.method == "GET":
        obj_regiser = account.accountform(request)
        return render(request,'register.html',{'obj_register':obj_regiser})
    elif request.method == "POST":
        ret = {'status':True,'message':None}
        obj_regiser = account.accountform(request,request.POST,request.FILES)
        if obj_regiser.is_valid():
            UserDate = obj_regiser.cleaned_data
            models.UserInfo.objects.create(
                username = UserDate['username'],
                password = UserDate['password'],
                nickname = UserDate['nickname'],
                email = UserDate['email'],

            )
        else:
            ret['status'] = False
            ret['message'] = obj_regiser.errors
        return HttpResponse(json.dumps(ret))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容