欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學(xué)堂Python培訓(xùn)之Django框架自定義session處理操作示例

2019-05-27 13:53:15 2094瀏覽

今天千鋒扣丁學(xué)堂Python培訓(xùn)老師給大家分享一篇關(guān)于Django框架自定義session處理操作示例詳解,結(jié)合實例形式分析了Django框架session操作的原理以及基于session的登陸、驗證等相關(guān)操作技巧,下面我們一起來看一下吧。



首先django有自己的一套session框架,有他自己的機制處理,但這通常是在全新構(gòu)件系統(tǒng)的時候才會用到。如果是一套已有的系統(tǒng),現(xiàn)在重新想用django做成web版的,由于以往的數(shù)據(jù)庫是已經(jīng)設(shè)計好,不能修改其表結(jié)構(gòu),但可以增加表,因為用django必須有django自己的一些系統(tǒng)表,這些是必須添加到原有的數(shù)據(jù)庫中的,我們可以通過mange.pysyncdb來創(chuàng)建.

| auth_group
| auth_group_permissions
| auth_permission
| auth_user
| auth_user_groups
| auth_user_user_permissions
| blog_content
| django_content_type
| django_session
| django_site

當(dāng)然,這些表各自有自己的作用,比如django_session就是用來管理session的。

如果你用djiango自身的session來管理用戶是否登錄,可以用系統(tǒng)自帶的裝飾方法:@login_required

但如果是你自己在原來的系統(tǒng)上開發(fā),原來的用戶管理肯定不可能是django一樣的。所以得自己寫一個類似@login_required方法來判斷用戶是否已經(jīng)登錄.

假設(shè)有一個usermodel是用戶的Class,并在models中已經(jīng)定義

class UserID(models.Model):
  login_id=models.CharField(max_length=32)
  login_pwd=models.CharField(max_length=32,blank=False)
  nickname=models.CharField(max_length=50)

登錄的方法

def checklogin(request):
  """ 用戶登錄簡易判斷 """
  try:
    login_id=request.POST.get('user','')
    userpwd=request.POST.get('password','')
    existuser=models.UserID.objects.get(login_id=login_id,login_pwd=userpwd)
    #假設(shè)存在此用戶,就要給session 賦值
    request.session['myuser']=existuser
  except:
    .....

到此為止,自己定義的登錄過程已經(jīng)完成,并且記錄了session值。如果在其他方法需要檢查用戶是否登錄時,如何寫自己的判斷方法呢?

def check_session(func):
  ''' check user session '''
  def wrapper(request,*args, **kv):
    userinfo=request.session.get('myuser',None)
    if not userinfo:
      return HttpResponseRedirect('/login') #沒有登錄,則跳轉(zhuǎn)到登錄頁面
    return func(request,*args, **kv)
  return wrapper

在其他需要檢查用戶是否登錄的views方法上,加上這個裝飾就可以了。

@check_session
def get_all_infomation(request):
  context={}
  context.update(csrf(request))
  ......
  return render_to_response('customer/all_information.html',context)

這樣,如果用戶沒有登錄的話,就會跳轉(zhuǎn)到登錄頁面,用裝飾實現(xiàn)了自己的用戶session判斷。

當(dāng)然有人會問,我要注銷登錄怎么處理呢?簡單,django的session其實就是dict.所以可以用如下方法注銷

def logout(request):
  try:
    del request.session['myuser']
  except KeyError:
    pass
  return HttpResponseRedirect('/')

以上就是關(guān)于千鋒扣丁學(xué)堂Python培訓(xùn)之Django框架自定義session處理操作示例的詳細(xì)介紹,最后想要了解更多關(guān)于Python和人工智能方面內(nèi)容的小伙伴,請關(guān)注扣丁學(xué)堂Python培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺為您提供權(quán)威的Python開發(fā)環(huán)境搭建視頻,Python培訓(xùn)后的前景無限,行業(yè)薪資和未來的發(fā)展會越來越好的,扣丁學(xué)堂老師精心推出的Python視頻教程定能讓你快速掌握Python從入門到精通開發(fā)實戰(zhàn)技能??鄱W(xué)堂Python技術(shù)交流群:279521237。


扣丁學(xué)堂微信公眾號                          Python全棧開發(fā)爬蟲人工智能機器學(xué)習(xí)數(shù)據(jù)分析免費公開課直播間


      【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】         【掃碼進入Python全棧開發(fā)免費公開課】



查看更多關(guān)于"Python開發(fā)資訊"的相關(guān)文章>

標(biāo)簽: Python培訓(xùn) Python視頻教程 Python在線視頻 Python學(xué)習(xí)視頻 Python培訓(xùn)班

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部