임시파일
개빡쳐서 만드는 장고 블로그 만들기 튜토리얼
튜토리얼이 꼭 이런식으로 밖에 안되나? 하는 생각이 계속 듭니다. 오픈 소스고 무료로 제공하는 게 이정도나 되는 건 놀라운 일이지만, 프로그램은 입체적으로 움직이고 서로 왔다갔다 하는데 그걸 2D 화면에 텍스트로 쑤셔넣으니 솔직히, 알아듣기 너무 힘듭니다. 화면이 영화 스크린 만 해서 창이란 창은 다 띄워놓고 가리키면서 하면 또 모를까, 모니터에 간신히 창 두어개 띄워놓고 바꿔가면서...
좀 다른, 좀 더 쉬운 튜토리얼이 있었으면 좋겠습니다. (방법 고민 중)
앞 부분 :
장고 폼 만드는 부분부터. 개요 적어보기
blog/forms.py 만들기
- forms와 Post임포트
- PostForm 이라는 클래스 만들기
- PostForm 밑에 메타클래스 걸고 Post랑 연결하기
base.html 수정하기
- post_new 링크걸기
blog/urls.py 수정하기
- post_new 에 대해 url추가
blog/views.py 수정하기
- PostForm 임포트 하고
- post_new 함수 추가하기
from .forms import PostForm
def post_new(request): form = PostForm() return render(request, 'blog/post_edit.html', {'form': form})
- forms.py에서 PostForm을 불러온다.
- post_new 라는 함수는 post_edit.html 이라는 파일을 렌더하여 보여준다.
templates 안에 post_edit.html을 만든다.
{% extends 'blog/base.html' %}
{% block content %}
<h1>New post</h1>
<form method="POST" class="post-form">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Save</button>
</form>
{% endblock %}
blog/views.py 추가 수정
def post_new(request):
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.published_date = timezone.now()
post.save()
return redirect('blog.views.post_detail', pk=post.pk)
else:
form = PostForm()
return render(request, 'blog/post_edit.html', {'form': form})
post_detail.html 수정
{% extends 'blog/base.html' %}
{% block content %}
<div class="post">
{% if post.published_date %}
<div class="date">
{{ post.published_date }}
</div>
{% endif %}
<a class="btn btn-default" href="{% url 'post_edit' pk=post.pk %}"><span class="glyphicon glyphicon-pencil"></span></a>
<h1>{{ post.title }}</h1>
<p>{{ post.text|linebreaksbr }}</p>
</div>
{% endblock %}
blog/urls.py 코드 추가
url(r'^post/(?P<pk>[0-9]+)/edit/$', views.post_edit, name='post_edit'),
blog/views.py 코드 추가
def post_edit(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == "POST":
form = PostForm(request.POST, instance=post)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.published_date = timezone.now()
post.save()
return redirect('blog.views.post_detail', pk=post.pk)
else:
form = PostForm(instance=post)
return render(request, 'blog/post_edit.html', {'form': form})
* 위에 추가 수정사항있음