상황:
현재 고객용, 업체용 로그인 view 함수가 넘겨주는 ctx를 제외한 나머지가 동일하다.
굳이 똑같은 코드를 2번이나 사용할 필요가 없으므로 1개로 줄이고 서로 호출해서 사용하고자한다.
1-1) login 함수의 내용을 common_login 함수로 옮긴다.
1-2) 고객용 로그인에서 업체용 링크를 배치시켜야하므로 ctx를 매개변수로 포함시킨다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | def common_login(request, ctx): if request.method == "GET": pass elif request.method == "POST": username = request.POST.get("username") password = request.POST.get("password") user = authenticate(username=username, password=password) if user is not None: auth_login(request, user) next_value = request.GET.get("next") if next_value: return redirect(next_value) else: return redirect("/partner/") else: ctx.update({ "error" : "존재하지 않는 사용자입니다." }) return render(request, "login.html", ctx) | cs |
2-1) common_login 함수를 호출하여 사용한다.
2-2) ctx도 같이 넘겨준다.
1 2 3 | def login(request): ctx = { "is_client" : True } return common_login(request, ctx) | cs |
3) 회원가입 페이지도 마찬가지로 하나로 줄여서 호출해서 사용하며, 업체용 view에서는 로그인 함수를 import하여 사용한다.
'코딩 연습 > Django' 카테고리의 다른 글
pip 라이브러리 정리 및 클론하기 (0) | 2018.12.11 |
---|---|
회원가입시 그룹 추가시키기 (0) | 2018.12.06 |
조건에 따라 링크 페이지 노출 (0) | 2018.12.06 |
그룹에 속한 사용자만 접속 가능한 페이지 (0) | 2018.12.05 |
로그인하지 않은 경우에는 접근 금지 (0) | 2018.12.05 |