-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathviews.py
113 lines (89 loc) · 3.91 KB
/
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
from django.shortcuts import redirect, render
from django.contrib import auth
from django.contrib.auth import login as auth_login, update_session_auth_hash
from django.contrib.auth.views import PasswordResetView, PasswordResetConfirmView, PasswordChangeView
from accounts.forms import SignupModelForm, CreateUserForm, password_changeForm
from myprofile.models import Profile
from django.urls import reverse_lazy
from django.contrib import messages
def login(request):
if request.method == "POST":
username = request.POST['username']
password = request.POST["password"]
user = auth.authenticate(request, username=username, password=password)
if user is not None:
auth.login(request, user)
return redirect('search:main_search')
else:
return render(request, 'accounts/login.html', {'error': '아이디 또는 비밀번호가 올바르지 않습니다'})
else:
return render(request, 'accounts/login.html')
def logout(request):
auth.logout(request)
return redirect('/')
def signup(request):
if request.method == "POST":
user_form = CreateUserForm(request.POST)
if user_form.is_valid():
user = user_form.save()
auth_login(request, user) # 로그인 처리
return redirect('accounts:signup_profile')
elif request.method == "GET":
user_form = CreateUserForm()
return render(request, 'accounts/signup.html', {
'user_form': user_form,
})
def signup_profile(request):
if request.method == "POST":
profile_form = SignupModelForm(
request.POST,
request.FILES,
)
if profile_form.is_valid():
user = request.user
profile = Profile.objects.create(
user=user,
name=user.last_name + user.first_name,
department=profile_form.cleaned_data['department'],
description=profile_form.cleaned_data['description'],
naver=profile_form.cleaned_data['naver'],
daum=profile_form.cleaned_data['daum'],
github=profile_form.cleaned_data['github'],
photo=profile_form.cleaned_data['photo'],
other_url=profile_form.cleaned_data['other_url'],
interested_tag=profile_form.cleaned_data['interested_tag'],
)
return redirect('search:main_search')
elif request.method == "GET":
profile_form = SignupModelForm()
return render(request, 'accounts/signup_profile.html', {
'profile_form': profile_form,
})
#비밀번호 변경
def password_change(request):
if request.method == 'POST':
password_change_form = password_changeForm(request.user, request.POST)
if password_change_form.is_valid():
# 비번 변경 후 자동 로그인 추가
user = password_change_form.save()
update_session_auth_hash(request, user)
# 여기까지
return redirect('/', request.user.username)
else:
password_change_form = password_changeForm(request.user)
return render(request, 'accounts/password_change_form.html', {
'password_change_form': password_change_form
})
class MyPasswordResetView(PasswordResetView):
success_url = reverse_lazy('accounts:password_reset')
template_name = 'accounts/password_reset_form.html'
def form_valid(self, form):
messages.info(self.request, '암호 변경 메일을 발송했습니다. 해당 메일로 가서 메일을 확인해주세요.')
return super().form_valid(form)
class MyPasswordResetConfirmView(PasswordResetConfirmView):
success_url = reverse_lazy('accounts:after_reset')
template_name = 'accounts/password_reset_confirm.html'
def form_valid(self, form):
return super().form_valid(form)
def after_reset(request):
return render(request, 'accounts/after_reset.html')