신은섭(Shin Eun Seop)

add new_post, edit_post using forms

1 +from django import forms
2 +from website.models import Post
3 +
4 +class PostForm(forms.ModelForm):
5 + class Meta:
6 + model = Post
7 + fields = ('title', 'text')
...\ No newline at end of file ...\ No newline at end of file
...@@ -9,6 +9,9 @@ ...@@ -9,6 +9,9 @@
9 </head> 9 </head>
10 <body> 10 <body>
11 <div class="page-header"> 11 <div class="page-header">
12 + {% if user.is_authenticated %}
13 + <a href="{% url 'post_new' %}" class="top-menu"><span class="glyphicon glyphicon-plus"></span></a>
14 + {% endif %}
12 <h1><a href="/">Django Girls Blog</a></h1> 15 <h1><a href="/">Django Girls Blog</a></h1>
13 </div> 16 </div>
14 <div class="content container"> 17 <div class="content container">
......
1 {% extends 'website/base.html' %} 1 {% extends 'website/base.html' %}
2 2
3 {% block content %} 3 {% block content %}
4 +
4 <div class="post"> 5 <div class="post">
5 {% if post.published_date %} 6 {% if post.published_date %}
6 <div class="date"> 7 <div class="date">
7 {{ post.published_date }} 8 {{ post.published_date }}
8 </div> 9 </div>
9 {% endif %} 10 {% endif %}
11 + {% if user.is_authenticated %}
12 + <a class="btn btn-default" href="{% url 'post_edit' pk=post.pk %}"><span class="glyphicon glyphicon-pencil"></span></a>
13 + {% endif %}
10 <h1>{{ post.title }}</h1> 14 <h1>{{ post.title }}</h1>
11 <p>{{ post.text|linebreaksbr }}</p> 15 <p>{{ post.text|linebreaksbr }}</p>
12 </div> 16 </div>
......
1 +{% extends 'website/base.html' %}
2 +
3 +{% block content %}
4 + <h1>New post</h1>
5 + <form method="POST" class="post-form">{% csrf_token %}
6 + {{ form.as_p }}
7 + <button type="submit" class="save btn btn-default">Save</button>
8 + </form>
9 +{% endblock %}
...\ No newline at end of file ...\ No newline at end of file
...@@ -4,6 +4,8 @@ from website import views ...@@ -4,6 +4,8 @@ from website import views
4 urlpatterns = [ 4 urlpatterns = [
5 url(r'^$', views.post_list, name='post_list'), 5 url(r'^$', views.post_list, name='post_list'),
6 url(r'^post/(?P<pk>\d+)/$', views.post_detail, name='post_detail'), 6 url(r'^post/(?P<pk>\d+)/$', views.post_detail, name='post_detail'),
7 - url(r'^files/', views.file_list, name='file_list'), 7 + url(r'^post/new/$', views.post_new, name='post_new'),
8 + url(r'^post/(?P<pk>\d+)/edit/$', views.post_edit, name='post_edit'),
8 9
10 + url(r'^files/', views.file_list, name='file_list'),
9 ] 11 ]
...\ No newline at end of file ...\ No newline at end of file
......
1 -from django.shortcuts import render, get_object_or_404 1 +from django.shortcuts import render, get_object_or_404, redirect
2 from django.utils import timezone 2 from django.utils import timezone
3 from website.models import Post 3 from website.models import Post
4 from restful.models import File 4 from restful.models import File
5 +from website.forms import PostForm
5 6
6 7
7 8
...@@ -17,3 +18,30 @@ def file_list(request): ...@@ -17,3 +18,30 @@ def file_list(request):
17 def post_detail(request, pk): 18 def post_detail(request, pk):
18 post = get_object_or_404(Post, pk=pk) 19 post = get_object_or_404(Post, pk=pk)
19 return render(request, 'website/post_detail.html', {'post': post}) 20 return render(request, 'website/post_detail.html', {'post': post})
21 +
22 +def post_new(request):
23 + if request.method == "POST":
24 + form = PostForm(request.POST)
25 + if form.is_valid():
26 + post = form.save(commit=False)
27 + post.author = request.user
28 + post.published_date = timezone.now()
29 + post.save()
30 + return redirect('post_detail', pk=post.pk)
31 + else:
32 + form = PostForm()
33 + return render(request, 'blog/post_edit.html', {'form': form})
34 +
35 +def post_edit(request, pk):
36 + post = get_object_or_404(Post, pk=pk)
37 + if request.method == "POST":
38 + form = PostForm(request.POST, instance=post)
39 + if form.is_valid():
40 + post = form.save(commit=False)
41 + post.author = request.user
42 + post.published_date = timezone.now()
43 + post.save()
44 + return redirect('post_detail', pk=post.pk)
45 + else:
46 + form = PostForm(instance=post)
47 + return render(request, 'blog/post_edit.html', {'form': form})
...\ No newline at end of file ...\ No newline at end of file
......