본문 바로가기
Python/Django

Django 글쓰기 기능 구현

by K-밍키 2022. 5. 31.

SNS의 대표적인 기능인 글쓰기 기능을 구현해보자.


1. 사용자가 데이터를 입력할 html에서 form 태그로 데이터를 묶어오기 (action과 method를 사용)

※ action = /tweet/' 입력 시 양쪽에 / 꼭 붙여야 한다.

<!-- templates/tweet/home.html -->
<!-- 생략 -->

<form action="/tweet/" method="post">
    {% csrf_token %}    <!-- form 태그 시작시 필수기입 --> 
    <div class="form-group mb-2">
    	<!-- name과 id를 my-content로 연결 --> 
        <textarea class="form-control" style="resize: none" name='my-content' id="my-content"></textarea>
    </div>
    <button type="submit" class="btn btn-primary" style="float:right;">작성하기</button>
</form>

 

2. 데이터베이스 모델을 추가하고 데이터를 저장하기

# tweet/views.py

from .models import TweetModel # 글쓰기 데이터베이스 모델 추가

def tweet(request):
    if request.method == 'GET':  # 요청하는 방식이 GET 방식인지 확인하기
        user = request.user.is_authenticated  # 사용자가 로그인이 되어 있는지 확인하기
        if user:  # 로그인 한 사용자라면
            return render(request, 'tweet/home.html')
        else:  # 로그인이 되어 있지 않다면
            return redirect('/sign-in')
            
            
    elif request.method == 'POST':  # 요청 방식이 POST 일때
        user = request.user  # 현재 로그인 한 사용자를 불러오기
        my_tweet = TweetModel()  # 글쓰기 모델 가져오기
        my_tweet.author = user  # 작성자는 현재 로그인 사용자 저장
        my_tweet.content = request.POST.get('my-content', '')  # 내용은 html에서 id,name 참조하여 가져오기
        my_tweet.save()  # my_tweet 저장
        return redirect('/tweet')