글쓰기를 빈 칸으로 입력하면 에러 내용을 알려준다.
글쓰기이므로 tweet 앱에서,
뷰 수정 > 화면 수정한다.
get은 화면을 보여주는 것
post
def tweet(request):
if request.method == 'GET':
user = request.user.is_authenticated
if user:
all_tweet = TweetModel.objects.all().order_by('-created_at')
return render(request, 'tweet/home.html', {'tweet':all_tweet})
else:
return redirect('/sign-in')
elif request.method == 'POST':
user = request.user # 변수 user가 있다.
content = request.POST.get('my-content', '')
if content == '': # 빈 글을 저장하면 에러를 보여주기
all_tweet = TweetModel.objects.all().order_by('-created_at')
return render(request, 'tweet/home.html', {'error':'글은 공백일 수 없습니다.', 'tweet':all_tweet})
# 오류시에도 원래 있던 글은 보여줘야; 안 그러면 공백
else:
my_tweet = TweetModel.objects.create(author=user, content=content) # request.user 대신 user 사용
# 우리모델을 가져와서 변수 my_tweet에 저장한다.
my_tweet.save() # 데이터를 가져왔으니 저장한다. 아래 5줄보다 라인이 줄었다.
# my_tweet = TweetModel()
# my_tweet.author = user
# my_tweet.content = request.POST.get('my-content', '')
# my_tweet.save()
return redirect('/tweet')
<form>
이하에 적는다.
<form action="/tweet/" method="post">
{% csrf_token %}
{% if error %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endif %}
로그인이 되어 있을 때만 상단에 친구 메뉴를 보여준다.
로그인 상태에만 '친구' 버튼 보여주기.
어디서 작업해야 할까? 상단 내비게이션 바.
<a class="navbar-brand" href="/">SpartaSNS</a>
{% 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 %} # 추가
위와 같이 {% if %} ~ {% endif %}
문을 작성해주면
친구
탭이 로그아웃 상태에서는 보이지 않고
로그인해야 보이게 된다.