Django 프레임워크 사용자 정의session 처리 작업 예

2835 단어
본고의 실례는 Django 프레임워크의 사용자 정의session 처리 조작을 설명한다.여러분에게 참고하도록 공유하겠습니다. 구체적으로는 다음과 같습니다.
django는 자신의session 프레임워크를 가지고 자신만의 메커니즘 처리를 하지만 이것은 보통 새로운 구성 요소 시스템에 사용될 때 사용된다.만약에 기존의 시스템이라면django를 웹판으로 다시 만들고 싶다. 기존의 데이터베이스는 이미 설계되어 있기 때문에 그 테이블 구조를 수정할 수 없지만 테이블을 늘릴 수 있다. 왜냐하면django를 사용하면django 자신의 일부 시스템 테이블이 있어야 하기 때문이다. 이런 것들은 반드시 원래의 데이터베이스에 추가해야 하기 때문에 우리는 mange를 통과할 수 있다.py syncdb에서 생성합니다.
| 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
물론 이 시계들은 각자 자신의 작용이 있다. 예를 들어django세션은 세션을 관리하는 데 쓰인다.
만약djiango 자신의session으로 사용자의 로그인 여부를 관리한다면 시스템 자체 장식 방법: @login_required그러나 만약에 네가 원래의 시스템에서 개발한다면 원래의 사용자 관리는django와 같을 수 없을 것이다.그래서 사용자가 로그인했는지 아닌지를 판단하기 위해 유사한 @login_required 방법을 직접 써야 한다.
사용자 모델이 사용자의Class이고 모델에 정의되어 있다고 가정하십시오

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)
    #       ,   session   
    request.session['myuser']=existuser
  except:
    .....


지금까지 사용자가 정의한 로그인 과정이 완성되었고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') #    ,        
    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)


이렇게 하면 사용자가 로그인하지 않으면 로그인 페이지로 넘어가 장식으로 사용자session 판단을 실현한다.
물론 누군가가 물어볼 것입니다. 로그인을 취소하려면 어떻게 해야 합니까?간단히,django의session은 사실dict이기 때문에 다음과 같은 방법으로 취소할 수 있다.

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


본고에서 기술한 바가 여러분들이 Django 프레임워크를 바탕으로 하는 Python 프로그램 설계에 도움이 되었으면 합니다.

좋은 웹페이지 즐겨찾기