diff --git a/blog/forms.py b/blog/forms.py new file mode 100644 index 0000000..9af9b04 --- /dev/null +++ b/blog/forms.py @@ -0,0 +1,8 @@ +from .models import Post +from django import forms + + +class PostForm(forms.ModelForm): + class Meta: + model=Post + fields=['title','content'] diff --git a/blog/templates/blog/base.html b/blog/templates/blog/base.html index e33cbe6..1926f42 100644 --- a/blog/templates/blog/base.html +++ b/blog/templates/blog/base.html @@ -34,6 +34,9 @@ + diff --git a/blog/templates/blog/create_post.html b/blog/templates/blog/create_post.html new file mode 100644 index 0000000..21ba363 --- /dev/null +++ b/blog/templates/blog/create_post.html @@ -0,0 +1,10 @@ +{% extends "blog/base.html" %} + +{% block content %} +

Create Post

+
+ {% csrf_token %} + {{ form.as_p }} + +
+{% endblock content %} \ No newline at end of file diff --git a/blog/templates/blog/update_post.html b/blog/templates/blog/update_post.html new file mode 100644 index 0000000..ebb5651 --- /dev/null +++ b/blog/templates/blog/update_post.html @@ -0,0 +1,10 @@ +{% extends "blog/base.html" %} + +{% block content %} +

Update Post

+
+ {% csrf_token %} + {{ form.as_p }} + +
+{% endblock content %} \ No newline at end of file diff --git a/blog/urls.py b/blog/urls.py index a817f61..0325b7a 100644 --- a/blog/urls.py +++ b/blog/urls.py @@ -5,4 +5,6 @@ urlpatterns = [ path("", views.home, name="blog-home"), path("about/", views.about, name="blog-about"), + path("create-post/", views.create_post, name="create_post"), + path("update-post//", views.update_post, name="update_post"), ] diff --git a/blog/views.py b/blog/views.py index 2675c50..eb2ec10 100644 --- a/blog/views.py +++ b/blog/views.py @@ -1,7 +1,8 @@ -from django.shortcuts import render - +from django.shortcuts import render,redirect,get_object_or_404 +from django.contrib.auth.decorators import login_required from .models import Post - +from .forms import PostForm +from django.contrib import messages def home(request): context = {"posts": Post.objects.all()} @@ -10,3 +11,39 @@ def home(request): def about(request): return render(request, "blog/about.html", {"title": "About"}) + +@login_required +def create_post(request): + if request.method == 'POST': + form=PostForm(request.POST) + if form.is_valid(): + user=form.save(commit=False) + user.author=request.user + user.save() + messages.success(request, 'The post has been created successfully.') + return redirect('home') + else: + messages.error(request, 'Please correct the following errors:') + form=PostForm() + return render(request,'blog/create_post.html',{'form':form}) + +@login_required +def update_post(request, pk): + post=get_object_or_404(Post, pk=pk) + + if request.method == "POST": + form=PostForm(request.POST, instance=post) + if form.is_valid(): + user=form.save() + user.author=request.user + user.save() + messages.info(request, "Post has been updated successfully") + # Redirect To Detail Page + return redirect('') + + messages.error(request,"Please correct the following error !!") + + else : + form=PostForm(instance=post) + + return render(request, "blog/update_post.html", {'form':form})