Python Django Web Framework - 11/14. 생성기능 (request response object)

leecw4u·2023년 10월 27일
0

Django

목록 보기
11/15
post-thumbnail

전 강의에 이어 create 함수를 구현해보자

먼저, 우리가 구현한 create 함수를 살펴보자.
처음에 request가 들어오고 이를 처리하고 그 정보를 httpresponse를 통해 현재 브라우저로 전송하게 된다.

검색엔진에서 django requset를 검색하게 되면 httpresponse object가 뭔지 알 수 있게 된다. Django 홈페이지 바로가기

여기서 우리가 필요한건 HttpRequest.method 이다.
request method
이를 사용해서 create 함수안에 GET 방식으로 들어왔을 때와 POST 방식으로 들어왔을 때 동작을 나눠보자.

GET

...
@csrf_exempt
def create(request):
    if request.method == 'GET':
        article = '''
        <form action="/create/" method="post">
            <p><input type="text" name="title" placeholder="title"></p>
            <p><textarea name="body" placeholder="body"></textarea></p>
            <p><input type="submit"></p>
        </form>    
        '''
	return HttpResponse(HTMLTemplate(article))
...

GET은 이전 코드와 똑같은 방식으로 작동하면 된다.

POST

from django.shortcuts import render, HttpResponse, redirect 
from django.views.decorators.csrf import csrf_exempt

nextId = 4
...
elif request.method == 'POST':
	title = request.POST['title']
    body = request.POST['body']
    newTopic = {"id": nextId, "title": title, "body": body}
    topics.append(newTopic)
    url = '/read/' + str(nextId)
    nextId += 1
    return redirect(url)
...

공식문건의 HttpRequest.POST를 사용하여 request의 정보를 추출할 수 있었다. 이 정보들을 topics에 append 했다.

또한, 새로운 글을 생성하자 마자 생성한 글의 상세보기로 바로 이동하기 위해
url을 생성하고 새로운 id값을 부여했다. 이를 django.shortcuts의 redirect를 사용하여 전달했다. django 홈페이지로 이동

profile
초보 개발자의 끄적끄적 스터디 블로그

0개의 댓글

관련 채용 정보