글을 일일이 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 |