Add post create view

This commit is contained in:
Maximilian Friedersdorff 2022-07-06 22:35:59 +01:00
parent 9a5bedabca
commit 4180203bd1
3 changed files with 27 additions and 1 deletions

View file

@ -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"),
]

View file

@ -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())

View 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 %}