1- from django .http import JsonResponse
2- from django .views .decorators .csrf import csrf_exempt
3-
4- @csrf_exempt
5- def basic_login (request ):
6- if request .method == "POST" :
7- # 로그인 로직 작성
8- return JsonResponse ({"message" : "기본 로그인 성공" })
9- return JsonResponse ({"error" : "Invalid request" }, status = 400 )
10-
11- @csrf_exempt
12- def signup (request ):
13- if request .method == "POST" :
14- # 회원가입 로직 작성
15- return JsonResponse ({"message" : "회원가입 성공" })
16- return JsonResponse ({"error" : "Invalid request" }, status = 400 )
17-
18- import json
19- from django .http import JsonResponse
201from django .views .decorators .csrf import csrf_exempt
212from django .contrib .auth .decorators import login_required
22- from django .shortcuts import render
3+ from django .shortcuts import render , redirect
4+ from django .http import JsonResponse
5+ from .models import UserProfile
6+
237
248@csrf_exempt
259@login_required
2610def profile (request ):
2711 if request .method == "GET" :
28- # profile.html 렌더링
29- return render (request , 'accounts/profile.html' , {
30- "user" : request .user ,
31- "profile" : getattr (request .user , "profile" , None )
32- })
12+ if request .session .get ("just_signed_up" , False ):
13+ request .session ["just_signed_up" ] = False
14+ return render (request , 'accounts/profile.html' , {
15+ "user" : request .user ,
16+ "profile" : request .user .profile ,
17+ })
18+ return redirect ("/" )
3319
20+ elif request .method == "POST" :
21+ try :
22+ profile = request .user .profile
23+
24+ profile .nickname = request .POST .get ("nickname" )
25+ profile .user_gender = request .POST .get ("user_gender" )
26+ profile .user_age = request .POST .get ("user_age" )
27+ # 프로필 이미지 URL은 추후 파일 업로드 처리 방식에 따라 별도 처리 가능
28+ profile .save ()
29+
30+ return JsonResponse ({"message" : "회원 정보 수정 성공" , "redirect" : "/" })
31+ except Exception as e :
32+ return JsonResponse ({"error" : str (e )}, status = 400 )
33+
34+ return JsonResponse ({"error" : "Invalid request" }, status = 400 )
35+
36+
37+ @csrf_exempt
38+ def signup (request ):
3439 if request .method == "POST" :
3540 try :
3641 data = json .loads (request .body )
37- profile = request .user .profile
3842
39- profile .nickname = data .get ("nickname" )
40- profile .user_gender = data .get ("user_gender" )
41- profile .user_age = data .get ("user_age" )
42- profile .profile_image_url = data .get ("profile_image_url" )
43+ username = data .get ("username" )
44+ email = data .get ("email" )
45+ password = data .get ("password" )
46+ nickname = data .get ("nickname" )
47+ gender = data .get ("user_gender" )
48+ age = data .get ("user_age" )
49+
50+ # 중복 체크
51+ if User .objects .filter (username = username ).exists ():
52+ return JsonResponse ({"error" : "이미 존재하는 아이디입니다." }, status = 400 )
53+ if UserProfile .objects .filter (nickname = nickname ).exists ():
54+ return JsonResponse ({"error" : "이미 존재하는 닉네임입니다." }, status = 400 )
55+
56+ # User 생성 및 프로필 설정
57+ user = User .objects .create_user (username = username , email = email , password = password )
58+ profile = user .profile
59+ profile .nickname = nickname
60+ profile .user_gender = gender
61+ profile .user_age = age
62+ profile .profile_image_url = data .get ("profile_image_url" , "default.png" )
4363 profile .save ()
4464
45- return JsonResponse ({
46- "message" : "회원 정보 수정 성공" ,
47- "user_id" : request .user .id ,
48- "nickname" : profile .nickname ,
49- "user_gender" : profile .user_gender ,
50- "user_age" : profile .user_age ,
51- "profile_image_url" : profile .profile_image_url ,
52- "user_email" : request .user .email ,
53- })
65+ # 로그인 처리 및 플래그 설정
66+ login (request , user )
67+ request .session ["just_signed_up" ] = True
68+
69+ return redirect ("/accounts/profile/" )
5470 except Exception as e :
5571 return JsonResponse ({"error" : str (e )}, status = 400 )
5672
5773 return JsonResponse ({"error" : "Invalid request" }, status = 400 )
5874
75+ '''
5976def check_nickname(request):
6077 nickname = request.GET.get("nickname")
61- if nickname == "abc" : # 예시
62- return JsonResponse ({"available" : False })
63- return JsonResponse ({"available" : True })
78+ if not nickname:
79+ return JsonResponse({"error": "닉네임이 필요합니다."}, status=400)
80+
81+ exists = UserProfile.objects.filter(nickname=nickname).exists()
82+ return JsonResponse({"available": not exists})
83+ '''
0 commit comments