1. 로그인/회원가입 - 로그인을 했을시 왜 로그인이 잘 안되는지 알려주기
1) 회원가입
#user/views.py
def sign_up_view(request):
''''''
elif request.method == 'POST': #None->''로 변경
username = request.POST.get('username', '')
password = request.POST.get('password', '')
password2 = request.POST.get('password2', '')
bio = request.POST.get('bio', '')
if password != password2:
#패스워드가 같지 않다고 알람
return render(request, 'user/signup.html', {'error':'패스워드를 확인 해 주세요!'})
else:
if username == '' or password == '':
return render(request, 'user/signup.html', {'error': '사용자 이름과 비밀번호는 필수 값 입니다.'})
old_user = auth.get_user_model().objects.filter(username=username)
if old_user:
return render(request, 'user/signup.html', {'error': '이미 존재하는 사용자 이름입니다.'})
else:
UserModel.objects.create_user(
username=username,
password=password,
bio=bio
)
return redirect('/sign-in')
이후 templates/user/signup.html을 수정한다.
<input type="text" class="form-control" id="bio" name="bio">
</div>
{% if error %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endif %}
<hr>
<div style="float: right">
<button type="submit" class="btn btn-primary">회원가입</button>
<a href="/sign-in" class="btn btn-secondary">로그인 페이지로</a>
</div>

정상적으로 작동한다.
2) 로그인
마찬가지로
#user/views.py
def sign_in_view(request):
if request.method == 'POST':
username = request.POST.get('username', '')
password = request.POST.get('password', '')
''''''
else:
return render(request, 'user/signin.html', {'error':'유저이름 혹은 패스워드를 확인 해 주세요'})
바꿔주는데 기존 redirect에서 render로 바꿔줘서 error메시지를 출력할 수 있게끔 해준다.
이후 templates/user/signin.html에서 하단의 내용을 수정해준다.
<hr>
{% if error %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endif %}
<div style="float: right">
<button type="submit" class="btn btn-primary">로그인</button>
<a href="/sign-up" class="btn btn-secondary">회원가입 페이지로</a>
</div>

정상 작동한다.
2. 글쓰기 빈칸 방지
tweet/views.py
def tweet(request):
''''''
elif request.method == 'POST':
user = request.user
my_tweet = Tweet()
my_tweet.author = user
my_tweet.content = request.POST.get('my-content', '')
my_tweet.save()
return redirect('/tweet')
를 하단과 같이 바꿔준다.
elif request.method == 'POST':
user = request.user
content = request.POST.get('my-content', '')
if content == '':
all_tweet = Tweet.objects.all().order_by('created_at')
return render(request, 'tweet/home.html', {'tweet': all_tweet, 'error':'글은 공백일 수 없습니다.'})
else:
my_tweet = Tweet.objects.create(author=user, content=content)
my_tweet.save()
return redirect('/tweet')
templates/tweet/home.html
<form action="/tweet/" method="post">
{% csrf_token %}
{% if error %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endif %}
<div class="form-group mb-2">
<textarea class="form-control" style="resize: none" name='my-content' id="my-content"></textarea>

정상 작동한다.
3. 로그아웃 상태에서도 '친구' 링크가 보이는것

templates/base.html
{% if user.is_authenticated %}
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="/user"> 친구 <span class="sr-only"></span></a>
</li>
</ul>
</div>
{% endif %}

사라졌다!
'Django > Django Vanila' 카테고리의 다른 글
| 15. Django 프로젝트 Github에 올리기 (0) | 2022.05.30 |
|---|---|
| 14. Django 모듈을 활용한 태그 달기 (0) | 2022.05.30 |
| 12. Many-To-Many 모델 생성(related_name) (0) | 2022.05.30 |
| 11. Django Shell (0) | 2022.05.30 |
| 10. Django 데이터베이스 관계 (0) | 2022.05.30 |