# blogPosts/views.py
from django.shortcuts import render
from .models import Post # 추가 (참고: .models == blogPosts.models)
def index(request): # 원래 있던 index 함수 수정
posts = Post.objects.all()
return render(request, 'blogPosts/index.html', {'posts': posts})
render의 세 번째 인자인 {‘posts’: posts}
는 context(optional)로서, 파이썬 dict type 객체를 사용하고 있습니다. view에서 사용하던 파이썬 변수를 django html 템플릿으로 넘겨주는 역할을 합니다.
key: 장고 템플릿 변수, 즉 view에서 조작한 데이터를 template에서 어떤 이름으로 활용할 지
value: view의 python 변수, view에서 조작한 데이터
# blogPosts(앱이름)/views.py
from django.shortcuts import render, redirect # redirect 추가
from .models import Post
...
# index 함수 코드 변경
def index(request):
if request.method == 'GET': # index
posts = Post.objects.all()
return render(request, 'blogPosts/index.html', {'posts': posts})
elif request.method == 'POST': # create(form을 이용하여 submit한 형태)
title = request.POST['title']
content = request.POST['content']
Post.objects.create(title=title, content=content)
return redirect('blogPosts:index')
Post.objects.create(title=title, content=content) # 이 코드를
new_post = Post(title=title, content=content) # 이렇게 바꾸어도 똑같이 작동합니다.
new_post.save()
아래 코드를 보면 중복이 많고 귀찮다..
def index(request):
def new(request):
def show(request, id):
def delete(request, id):
def update(request, id):
def comment_new(request, id):
def comment_show(request, id, cid):
def comment_delete(request, id, cid):
def comment_update(request, id, cid):
아래와 같이 Class화 시키면 좀 더 구조화, 유지 보수 쉽게 가능!
- views.CommentView.create 같은 식으로 접근!
class CommentView:
def create(request, id):
def read(request, id, cid):
def update(request, id, cid):
def delete(request, id, cid):