임시파일

개빡쳐서 만드는 장고 블로그 만들기 튜토리얼


튜토리얼이 꼭 이런식으로 밖에 안되나? 하는 생각이 계속 듭니다. 오픈 소스고 무료로 제공하는 게 이정도나 되는 건 놀라운 일이지만, 프로그램은 입체적으로 움직이고 서로 왔다갔다 하는데 그걸 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})

* 위에 추가 수정사항있음

results matching ""

    No results matching ""