django 16 글쓰기

Grace Goh·2022년 10월 10일
0

Django

목록 보기
17/32
python manage.py makemigrations
python manage.py migrate

위 명령어를 이용해 tweet 모델을 DB에 저장했다.

같은 url이라도 접근 방식에 따라 다른 기능을 수행한다.

  • GET 우리가 데이터를 보는 것
  • POST 우리가 작성한 후 보내는 것

home.html

    <div class="media-body">
        <h5 class="mt-0">나의 이야기를 적어주세요</h5>
        <p>
        <form action="/tweet/" method="post"> # form (글 적는 공간) 정보 필요
            {% csrf_token %} # form 안에는 암호화 정보 포함해야
            <div class="form-group mb-2">
                <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>
        </p>
    </div>

/tweet/ url로, POST로 보내준다고 폼을 설정.
그 url에 해당하는 view를 만들어야.

textarea, id="my-content"가 tweet/views.py로 넘겨주는 부분이다.

tweet/urls.py


tweet/views.py

GET만 있는데 POST를 추가한다.

from django.shortcuts import render, redirect
from .models import TweetModel # 추가


# ...

def tweet(request):
    if request.method == 'GET':
        user = request.user.is_authenticated

        if user:
            return render(request, 'tweet/home.html')
        else:
            return redirect('/sign-in')

    elif request.method == 'POST': # 글 + 글을 작성한 사용자까지 저장한다.
    	user = request.user
        my_tweet = TweetModel()
        my_tweet.author = user
        my_tweet.content = request.POST.get('my-content', '')
        my_tweet.save()
        return redirect('/tweet')
profile
Español, Inglés, Coreano y Python

0개의 댓글