본문 바로가기
📝💪/Django

3주차_5번째_게시글 쓰기

by 수쨔앙 2022. 9. 23.

같은 url이라도 요청방식(get, post)이 다르면 다른 방식으로 접근이 된다!

 

게시글 쓰기

글 작성할 html 만들기

templates > tweet > home.html 열기

form은 글을 적는 공간인데 form 안에 submit이 있으면 그 안에 있는 내용을 서버로 보내주는거다!

/tweet으로 보낼것이고, POST로 보낼고, 암호화도 해주자

<form action="/tweet" method="post">
	{% csrf_token %}

 

글 저장할 view 만들기

url에 해당하는 view를 설정해주자

tweet앱에 urls.py로 들어가면

path('tweet/', views.tweet, name='tweet')

이미 tweet이라는 url로 적용되어있는 함수가 있다 views.py에 있다!

 

뭘 받아올지 templates/tweet의 home에 가서 확인해보자

 

<textarea class="form-control" style="resize: none" name='my-content' id="my-content"></textarea>

name이 my-content 이므로 이걸 받아오면 된다

 

tweet앱에 views.py로 들어가면 GET 만있는데

POST를 추가해주자

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':  # 요청 방식이 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')

 

그러면 내용을 입력하고 작성하기 버튼을 누르면

창은 아무것도 변경된게 없지만

 

여기는 이렇게 잘 저장이 되고 있다!

 

728x90

댓글