상황:

현재 고객용, 업체용 로그인 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하여 사용한다.

블로그 이미지

쵸잇

,