Add post create view
This commit is contained in:
parent
9a5bedabca
commit
4180203bd1
3 changed files with 27 additions and 1 deletions
|
|
@ -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