django 5-3 blank 방지, 로그인시 친구tab

Grace Goh·2022년 10월 13일
0

Django

목록 보기
26/32

1. 글쓰기 blank로 입력 방지

글쓰기를 빈 칸으로 입력하면 에러 내용을 알려준다.

글쓰기이므로 tweet 앱에서,
뷰 수정 > 화면 수정한다.

tweet/views.py

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')

templates/tweet/home.html

<form> 이하에 적는다.

<form action="/tweet/" method="post">
    {% csrf_token %}
    {% if error %}
        <div class="alert alert-danger" role="alert">
            {{ error }}
        </div>
    {% endif %}



2. 로그인시만 친구 탭 보여주기 (내비게이션 바)

로그인이 되어 있을 때만 상단에 친구 메뉴를 보여준다.

로그인 상태에만 '친구' 버튼 보여주기.
어디서 작업해야 할까? 상단 내비게이션 바.

templates/base.html

        <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 %}문을 작성해주면
친구 탭이 로그아웃 상태에서는 보이지 않고
로그인해야 보이게 된다.

profile
Español, Inglés, Coreano y Python

0개의 댓글