commit
17e41a9e4c
4 changed files with 39 additions and 1 deletions
|
|
@ -106,3 +106,15 @@ class PostViewsTests(TestCase):
|
|||
url = reverse("posts:post_detail", kwargs={"pk": self.post.pk})
|
||||
c.post(url, {"comment": ""})
|
||||
self.assertFalse(self.post.comments.all().exists())
|
||||
|
||||
def test_can_post_a_post(self):
|
||||
c = Client()
|
||||
c.login(username="someone", password="secret")
|
||||
url = reverse("posts:post_create")
|
||||
with open(
|
||||
os.path.join(os.path.dirname(__file__), "test_data", "test_img.png"),
|
||||
mode="rb",
|
||||
) as f:
|
||||
c.post(url, {"title": "title", "body": "body", "img": File(f)})
|
||||
|
||||
self.assertEqual(Post.objects.count(), 2)
|
||||
|
|
|
|||
|
|
@ -5,4 +5,5 @@ from . import views
|
|||
app_name = "posts"
|
||||
urlpatterns = [
|
||||
path("post/<int:pk>", views.PostDetailView.as_view(), name="post_detail"),
|
||||
path("post/new", views.PostCreateView.as_view(), name="post_create"),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
from django.views.generic import DetailView
|
||||
from django.views.generic import DetailView, CreateView
|
||||
from django.views.generic.edit import ModelFormMixin
|
||||
from django.forms import modelform_factory
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.urls import reverse
|
||||
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
|
||||
|
|
@ -32,3 +33,17 @@ class PostDetailView(LoginRequiredMixin, DetailView, ModelFormMixin):
|
|||
return self.form_valid(form)
|
||||
else:
|
||||
return self.form_invalid(form)
|
||||
|
||||
|
||||
class PostCreateView(LoginRequiredMixin, CreateView):
|
||||
model = Post
|
||||
fields = ("title", "body", "img")
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse("posts:post_detail", kwargs={"pk": self.object.pk})
|
||||
|
||||
def form_valid(self, form):
|
||||
self.object = form.save(commit=False)
|
||||
self.object.user = self.request.user
|
||||
self.object.save()
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
|
|
|
|||
10
flangr/templates/posts/post_form.html
Normal file
10
flangr/templates/posts/post_form.html
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Upload a new picture</h1>
|
||||
<form enctype="multipart/form-data" action="" method="post">
|
||||
{% csrf_token %}
|
||||
{{ form }}
|
||||
<input type="submit", value="Post">
|
||||
</form>
|
||||
{% endblock content %}
|
||||
Loading…
Add table
Reference in a new issue