본문 바로가기

Web Programming/Django

Blog 완성하기 (글 작성하기)

글을 일일이 admin 사이트에서 추가하기는 매우 불편하고 실제 사이트들도 그렇게 이용하지 않는다

그래서 블로그 프로젝트 내부에서 글을 직접 작성할 수 있는 페이지를 추가하고자 한다


먼저, template 파일을 만들어준다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/app/template/new.html
<br>
    <div class="container">
        <form action="">
          <h4>제목: </h4>
          <input type="text" name="title">
          <br>
          <br>
          <h4>본문: </h4>
          <textarea cols=40 rows=10 name="body"></textarea>
          <br>
          <br>
          <input class="btn btn-dark" type="submit" value="제출하기">
      </form>
    </div>
cs


다음, url을 설정해주고 view를 통해 new,html 파일을 띄워줄 수 있도록 한다


1
2
3
4
5
6
7
# urls.py
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', blog.views.home, name='home'),
    path('blog/<int:blog_id>',blog.views.detail, name="detail"),
    path('blog/new/',blog.views.new,name="new"), #추가
}
cs



1
2
3
4
# views.py
# 새 블로그 글 만들기
def new(request):
    return render(request, 'new.html')
cs



이렇게 되면 다음과 같은 페이지를 띄울 수 있다


이제 제출하기 버튼을 누르게 되면 실제 글이 만들어지는 처리를 수행하기 위하여 view와 url을 설정해준다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
# views.py
from django.shortcuts import render, get_object_or_404, redirect
    from django.utils import timezone
    
    from .models import Blog
    # Create your views here.
    
    def create(request):
        blog = Blog()
        blog.title = request.GET['title']
        blog.body = request.GET['body']
        blog.pub_date = timezone.datetime.now()
        blog.save()
        return redirect('/blog/' + str(blog.id))
cs


1
2
# urls.py
path('blog/create/', blog.views.create, name='create'),
cs


마지막으로, new.html 에서 form 액션의 url을 수정해준다


1
2
# new.html
<form action="{% url 'create' %}">
cs


'Web Programming > Django' 카테고리의 다른 글

장고 보다 간편화하기(Base, url 정리)  (0) 2019.02.02
Portfolio 프로젝트 (Static 파일 처리)  (0) 2019.02.02
Home & Detail (Blog 모델 상세 페이지)  (0) 2019.01.31
Model & Admin  (0) 2019.01.21
Word Counter 만들기  (0) 2019.01.17