1. 程式人生 > >Django項目:CRM(客戶關系管理系統)--49--40PerfectCRM實現全局密碼修改

Django項目:CRM(客戶關系管理系統)--49--40PerfectCRM實現全局密碼修改

比對 admin inf register 配置 content del 成功 else

技術分享圖片

技術分享圖片
 1 # gbacc_urls.py
 2 # ————————38PerfectCRM實現全局賬號登錄註銷————————
 3 from django.conf.urls import url
 4 from gbacc import gbacc_views
 5 urlpatterns = [
 6     url(r^gbacc_login/, gbacc_views.gbacc_login, name=gbacc_login),  # 全局登錄
 7     # LOGIN_URL = ‘/gbacc/gbacc_login/‘# login_url 配置,默認‘/accounts/login/‘ #註意 / (斜杠,絕對路徑)#settings.py
8 9 url(r^gbacc_logout/, gbacc_views.gbacc_logout, name=gbacc_logout), # 全局註銷,默認跳轉到accounts/login 10 11 # ————————39PerfectCRM實現全局賬號註冊———————— 12 url(r^gbacc_register/, gbacc_views.gbacc_register, name=gbacc_register), # 註冊 13 # ————————39PerfectCRM實現全局賬號註冊———————— 14 15 #
————————40PerfectCRM實現全局密碼修改———————— 16 url(r^(\d+)/gbacc_modify/$,gbacc_views.gbacc_modify, name=gbacc_modify), 17 # 全局logout django logout 默認跳轉到accounts/login 18 # ————————40PerfectCRM實現全局密碼修改———————— 19 20 21 ] 22 # ————————38PerfectCRM實現全局賬號登密碼密碼錄註銷————————
# gbacc_urls.py

技術分享圖片

技術分享圖片
  1
# gbacc_views.py 2 # ————————38PerfectCRM實現全局賬號登錄註銷———————— 3 from django.contrib.auth import login #記錄登錄 #Django在數據庫創建一條記錄 #記住密碼,免登錄 4 from django.contrib.auth import authenticate #調用用戶認證模塊 5 from django.contrib.auth import logout #註銷功能 6 from django.shortcuts import render #頁面返回 7 from django.shortcuts import redirect #頁面返回 8 9 #全局賬號登錄 10 def gbacc_login(request): 11 errors={} 12 if request.method =="POST": 13 _email=request.POST.get(email) 14 _password=request.POST.get(password) 15 user =authenticate(username=_email,password=_password)#調用用戶認證模塊 16 print(認證賬號密碼,user) 17 if user: 18 login(request,user)#記錄登錄 #Django在數據庫創建一條記錄 #記住密碼,免登錄 19 next_url =request.GET.get(next,/)#跳轉的頁面,默認為首頁 20 return redirect(next_url) 21 else: 22 errors[error]=認證失敗! 23 return render(request,gbacc_specific/gbacc_login.html,locals()) 24 25 #全局賬號註銷 26 def gbacc_logout(request): 27 logout(request) #調用Djangao 註銷功能 28 return redirect(/gbacc/gbacc_login/) 29 30 # ————————38PerfectCRM實現全局賬號登錄註銷———————— 31 32 33 34 35 36 # ————————39PerfectCRM實現全局賬號註冊———————— 37 38 #json 對錯誤信息對象進行處理 #處理註冊的內容 39 import json #轉為json格式 40 from django.core.exceptions import ValidationError #錯誤信息 41 class JsonCustomEncoder(json.JSONEncoder): 42 def default(self,field): 43 if isinstance(field,ValidationError):#如果是錯誤信息進行處理 44 return {code:field.code ,messages:field.messages} 45 else: 46 return json.JSONEncoder.default(self,field) 47 48 #註冊 ajax 驗證 49 from gbacc.gbacc_auxiliary.account import RegisterForm #註冊驗證 50 from django.contrib.auth.hashers import make_password #密碼加密 51 from django.shortcuts import HttpResponse #頁面返回 52 from crm import models 53 def gbacc_register(request): 54 if request.method==GET: 55 obj=RegisterForm(request=request, data=request.POST) #註冊驗證 #PerfectCRM.gbacc_auxiliary.account 56 return render(request, gbacc_specific/gbacc_register.html,{obj:obj}) 57 elif request.method==POST: 58 #返回的字符串 字典 59 ret={status:False,error:None,data:None} 60 #進行驗證 調用RegisterForm 61 obj=RegisterForm(request=request, data=request.POST)#註冊驗證 #PerfectCRM.gbacc_auxiliary.account 62 if obj.is_valid(): 63 name = obj.cleaned_data.get(name)#獲取用戶名 64 password = obj.cleaned_data.get(password) #獲取密碼 65 email= obj.cleaned_data.get(email) #獲取郵箱賬號 66 password=make_password(password,)#密碼加密 67 #print(username,password,email) 68 #——————數據庫添加數據—————— 69 models.UserProfile.objects.create(name=name,password=password,email=email,) 70 #——————數據庫添加數據—————— 71 #獲取用戶數據 72 user_info= models.UserProfile.objects. 73 filter(name=name, password=password). 74 values(id, name, email,).first() 75 #nid=user_info.id 76 print(user_info,type(user_info),..........) 77 # admin_obj = base_admin.site.registered_sites[‘crm‘][‘userprofile‘]#表類 78 # user_obj=admin_obj.model.objects.get(id=user_info[‘id‘])#類表的對象 79 # user_obj.set_password(password)#加密 80 # user_obj.save() 81 request.session[user_info] = user_info # session 82 #print(user_info.id) 83 ret[status]=True #狀態 84 ret[data]=obj.cleaned_data 85 # print(obj.cleaned_data) 86 # print(ret) 87 ret=json.dumps(ret)#轉為json格式 88 #return HttpResponse(ret) 89 else: 90 #加入錯誤信息 91 #print(obj.errors) 92 ret[error]=obj.errors.as_data() 93 #提示為False 94 #ret[‘status‘]=False 95 #對錯誤信息對象進行轉化處理 前端不用二次序列化 96 ret=json.dumps(ret,cls=JsonCustomEncoder) 97 #print(ret) 98 return HttpResponse(ret) 99 100 # ————————39PerfectCRM實現全局賬號註冊———————— 101 102 103 # ————————40PerfectCRM實現全局密碼修改———————— 104 from king_admin import base_admin 105 from king_admin import forms as kingforms 106 def gbacc_modify(request,user_id):#用戶密碼修改 107 admin_obj = base_admin.site.registered_sites[crm][userprofile]#表類 108 model_form = kingforms.CreateModelForm(request,admin_obj=admin_obj)#modelform 生成表單 加驗證 109 obj=admin_obj.model.objects.get(id=user_id)#類表的對象 110 errors={}#錯誤提示 111 if request.method==POST: 112 ret={} 113 _password0=request.POST.get(password0) 114 user =authenticate(username=obj.email,password=_password0)#調用用戶認證模塊 115 print(obj.email,obj.email) 116 print(驗證比對數據庫,user) 117 _password1=request.POST.get(password1) 118 _password2=request.POST.get(password2) 119 if user: 120 if _password1==_password2: 121 if len(_password1)>6: 122 obj.set_password(_password1)#繼承Django方法 #加密 123 obj.save() 124 ret=密碼修改成功! 125 return redirect(/gbacc/gbacc_login/) 126 else: 127 errors[password_too_short]=必須不少於6字符 128 else: 129 errors[invalid_password]=兩次輸入的密碼不一樣 130 else: 131 errors[invalid_password] = 原密碼錯誤 132 return render(request,gbacc_specific/gbacc_modify.html,locals()) 133 # ————————40PerfectCRM實現全局密碼修改————————
# gbacc_views.py

技術分享圖片

技術分享圖片
 1 {#global_modify.html#}
 2 {## ————————40PerfectCRM實現全局密碼修改————————#}
 3 {% extends "gbacc_master/gbacc_sample.html" %}
 4 {% block right-container-content %}
 5         <div class="container col-lg-offset-3">
 6             <form  class="form-signin col-lg-4 pu " method="post" >{% csrf_token %}
 7                 <div><h2 class="form-signin-heading">CRM 修改密碼</h2> </div>
 8                 <span style="color: red">{{ model_form.errors }}</span> 
 9                     <div>
10                         <label class="col-sm-4 control-label "  style="font-weight: normal">  用戶名:  </label>
11                         <label><input type="text" name="user"  class="form-control" value="{{ obj }}" disabled>  </label>
12                     </div>
13                     <div>
14                         <label class="col-sm-4 control-label "  style="font-weight: normal">   原密碼:</label>
15                         <label><input type="password" name="password0" class="form-control">  </label>
16                     </div>
17                     <div>
18                         <label class="col-sm-4 control-label "  style="font-weight: normal">   新密碼:</label>
19                         <label><input type="password" name="password1" class="form-control">  </label>
20                     </div>
21                     <div>
22                         <label  class="col-sm-4 control-label "  style="font-weight: normal">  新密碼(重復): </label>
23                         <label><input type="password" name="password2" class="form-control"></label>
24                     </div>
25                     <div >
26                         {% for k, v in errors.items %}
27                             <span style="color: red">{{ v }}</span>
28                         {% endfor %}
29                     </div>
30                     <div><input type="submit" value="提交" class="pull-right btn btn-info " ></div>
31             </form>
32         </div>
33 {% endblock %}
34 {## ————————40PerfectCRM實現全局密碼修改————————#}
{#global_modify.html#}

技術分享圖片

Django項目:CRM(客戶關系管理系統)--49--40PerfectCRM實現全局密碼修改