티스토리 뷰

django

django / 새 글 작성

4567은 소수 2020. 12. 25. 00:39

기존 장고 프로젝트에서 새 글을 작성해봅시다. 처음 짜놓은 모델을 바탕으로 글 쓰는 법만 간단히 소개하므로 추가적인 모델을 만들어 새로운 글을 만들거나 새로운 파일을 올리면 됩니다!

 

우선 url부터 짜봅시다. urls.py의 urlpatterns에 아래를 추가합니다.

path('create/',views.create, name="create")

그리고 views를 건들기 전 model에 어떤것이 있는지 확인하면 다음과 같습니다.

class Post(models.Model):
  title = models.CharField(max_length=20)
  body = models.TextField()
  date = models.DateTimeField(default=timezone.now)

새 글을 쓸 때 title과 body 부분만 입력하도록 하고 date는 새 글을 쓰는 시점으로 자동 저장되도록 합시다.

 

이제 views를 아래와 같이 작성합니다.

def create(request):
  if request.method=="POST":
    post = Post()
    post.title = request.POST['title']
    post.body = request.POST['body']
    post.date = timezone.now()
    post.save()
    return redirect('/detail/'+str(post.id),{'post':post})
  else:
    post = Post()
    return render(request,'create.html',{'post':post})

method가 POST 방식으로 내가 입력한 무언가를 넘겨준다면 기존 모델의 title, body, date 값을 저장시킨 뒤 해당 detail 페이지로 보냅니다. POST 방식으로 넘겨준게 없다면, 즉, 새 글 작성하는 첫 클릭 시에는 create.html을 넘겨줍니다.

 

create.html은 간단하게 다음과 같이만 써줍시다.

{% extends 'base.html' %}
{% block content %}
  <div class="container">
  <form method="POST">
   {% csrf_token %}
   제목 : 
   <input name="title" type="text" value="">
   <br><br>
   
   내용 :
   <textarea cols=50 rows=20 name="body"></textarea>
    <br><br>
    
    <input class="btn btn-primary" type="submit" value="글 작성">
  </form>
  </div>
{% endblock %}

이제 결과를 확인하면 다음과 같습니다.

 

대충 만들긴했지만, 새로 글을 작성하는 페이지를 만들었습니다.

 

gdgd라는 이름으로 새로운 글이 만들어졌습니다. (ㅎㅇㅎㅇ 로 할려했는데 영어였네요 ㅎㅎㅎ)

'django' 카테고리의 다른 글

django / 글 수정, 삭제  (0) 2020.12.25
django / 사진 업로드 (media)  (0) 2020.12.25
django / url 관리  (0) 2020.12.04
django / base.html 만들기 (템플릿 상속)  (0) 2020.12.03
django / detail 페이지 만들기 (링크 연결+pk)  (0) 2020.12.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/12   »
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
글 보관함