Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- 싸피셜
- 셀프넘버
- sqld
- 백준
- 싸피10기
- 14658
- QuerySetAPI
- db
- git
- Django
- 머신러닝종류
- react
- 리액트
- SSAFY
- TypeScript
- 데코레이터
- SSAFYcial
- Javascript
- js
- unionfind
- Python
- pwa적용하기
- 플로이드워셜
- VITE
- vitepwa
- 알고리즘
- 싸피
- queryset
- PWA
- SQL
Archives
- Today
- Total
Meme's IT
[Django] 게시판 만들기 - 글 작성 본문
앞의 글과 이어집니다.
게시판에서 새로운 글을 작성할 수 있는 페이지를 만들어 보자
이때, 필요한 함수는 총 몇가지 일까?
- 사용자 입력 데이터를 받을 페이지를 렌더링 하는 new함수와
- 사용자가 입력한 데이터를 받아 DB에 저장하는 create함수가 필요하다.
# new함수
1. url 추가해주기
from django.urls import path
from . import views
urlpatterns = [
# 전체 게시글 조회
path('', views.index, name='index'),
# 단일 게시글 조회
path('<int:pk>/', views.detail, name='detail'),
# 게시글 새로 쓰기
path('new/',views.new, name='new'),
path('create/', views.create, name='create'),
]
2. views.py에 new함수 추가해주기
new함수는 사용자 입력을 받기만 하는 역할이므로 바로 render해주면 된다.
def new(request):
return render(request,'articles/new.html')
3. new.html 파일 만들어주기
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>new</title>
</head>
<body>
<h1>새로운 글 작성</h1>
<form action="{% url "create" %}" method="GET">
<div>
<label for="title">제목: </label>
<input type="text" name="title" id="title">
</div>
<div>
<label for="content">내용: </label>
<textarea name="content" id="content"></textarea>
</div>
<input type="submit" value="생성하기">
</form>
</body>
</html>
위의 html코드에서
<form action="{% url "create" %}" method="GET">
method = "GET" 은 어떤걸 의미하는 걸까? 참고
→ method = "POST"로 바꿔주고 CSRF Token을 추가해줘야함
<h1>새로운 글 작성</h1>
<form action="{% url "create" %}" method="POST">
{% csrf_token %}
<div>
<label for="title">제목: </label>
<input type="text" name="title" id="title">
</div>
<div>
<label for="content">내용: </label>
<textarea name="content" id="content"></textarea>
</div>
<input type="submit" value="생성하기">
</form>
이를 적용해서 new.html의 body부분을 다음과 같이 바꿔준다.
# create함수
만들기 전에....
게시글 작성 후, 완료했다는 페이지가 꼭 필요할까?
NO.... 굳이 안만들고 바로 전체 게시물 페이지 or 작성한 글의 페이지로 넘어가는 것이 더 맞다..
그래서 필요한게 redirect
redirect() : 클라이언트가 인자에 작성된 주소로 다시 요청을 보내도록 하는 함수
→ create함수는 redirect를 이용해서 구현
# views.py
def create(request):
title = request.POST.get('title')
content = request.POST.get('content')
article = Article(title = title, content= content)
article.save()
return redirect('detail', article.pk)
이후 서버를 열어 articles/new 에서 새로운 글을 작성할 수 있다.
글을 작성하면
Detail 페이지로 가는 것을 확인할 수 있다.
'BackEnd > Django' 카테고리의 다른 글
[Django] 게시판 만들기 - 수정 (0) | 2023.09.26 |
---|---|
[Django] 게시판 만들기 - 삭제 (0) | 2023.09.26 |
[Django] 게시판 만들기 - 조회 (0) | 2023.09.26 |
[Django] QuerySet API 사용해보기 (0) | 2023.09.15 |
[Django] ORM과 QuerySet API (0) | 2023.09.15 |