add edit,add,delete for posts
This commit is contained in:
parent
8ac04f8bf0
commit
a8f9eb393e
8
blog/forms.py
Normal file
8
blog/forms.py
Normal file
|
@ -0,0 +1,8 @@
|
|||
|
||||
from django import forms
|
||||
from .models import Post
|
||||
|
||||
class PostForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Post
|
||||
fields = ['title', 'content']
|
|
@ -5,7 +5,21 @@
|
|||
<title>My Blog is shiny</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>My Blog</h1>
|
||||
<h1>My Blog</h1>
|
||||
{% if request.user.username %}
|
||||
<p>Welcome, {{ request.user.username }}!</p>
|
||||
<a href="{% url 'logout' %}">Logout</a>
|
||||
<h2>nav</h2>
|
||||
{% if template_name != 'home.html' %}
|
||||
<a href="{% url 'home' %}">home</a> |
|
||||
{% endif %}
|
||||
<a href="{% url 'dashboard' %}">dashboard</a>
|
||||
{% else %}
|
||||
<h2>nav</h2>
|
||||
<a href="{% url 'login' %}">Login</a> |
|
||||
<a href="{% url 'register' %}">Register</a>
|
||||
{% endif %}
|
||||
<h2>posts</h2>
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
</body>
|
||||
|
|
|
@ -6,13 +6,25 @@
|
|||
<body>
|
||||
<h2>Dashboard</h2>
|
||||
<p>Welcome, {{ request.user.username }}!</p>
|
||||
<a href="{% url 'home' %}">home</a>|
|
||||
<a href="{% url 'logout' %}">Logout</a>
|
||||
<h3>Your Posts</h3>
|
||||
<ul>
|
||||
{% for post in posts %}
|
||||
<li>{{ post.title }}</li>
|
||||
<li>
|
||||
{{ post.title }}
|
||||
<a href="{% url 'edit_post' post.pk %}">Edit</a>
|
||||
<a href="{% url 'delete_post' post.pk %}">Delete</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<h3>Add a New Post</h3>
|
||||
<form method="post" action="{% url 'add_post' %}">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
<button type="submit">Add Post</button>
|
||||
</form>
|
||||
<br/>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
|
15
blog/templates/blog/edit_post.html
Normal file
15
blog/templates/blog/edit_post.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Edit Post</title>
|
||||
</head>
|
||||
<body>
|
||||
<h2>Edit Post</h2>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
<button type="submit">Save Changes</button>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
{% block content %}
|
||||
<h2>{{ post.title }}</h2>
|
||||
<p><small>Updated at: {{ post.updated_at }}</small></p>
|
||||
<p>{{ post.content }}</p>
|
||||
<p><small>By {{ post.author }} on {{ post.created_at }}</small></p>
|
||||
{% endblock %}
|
||||
<a href="{% url 'home' %}">Back to Home</a>
|
||||
|
|
|
@ -1,16 +1,20 @@
|
|||
|
||||
from django.shortcuts import render , redirect
|
||||
from .models import Post
|
||||
from django.shortcuts import render, redirect, get_object_or_404
|
||||
from django.contrib.auth import authenticate, login, logout
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.forms import UserCreationForm
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.urls import reverse
|
||||
from .models import Post
|
||||
from .forms import PostForm
|
||||
|
||||
|
||||
|
||||
def home(request):
|
||||
posts = Post.objects.all()
|
||||
return render(request, 'blog/home.html', {'posts': posts})
|
||||
|
||||
def post_detail(request, pk):
|
||||
post = Post.objects.get(pk=pk)
|
||||
post = get_object_or_404(Post, pk=pk)
|
||||
return render(request, 'blog/post_detail.html', {'post': post})
|
||||
|
||||
def login_view(request):
|
||||
|
@ -27,7 +31,7 @@ def login_view(request):
|
|||
|
||||
def logout_view(request):
|
||||
logout(request)
|
||||
return redirect('login')
|
||||
return redirect('home')
|
||||
|
||||
@login_required
|
||||
def dashboard(request):
|
||||
|
@ -43,3 +47,35 @@ def register(request):
|
|||
else:
|
||||
form = UserCreationForm()
|
||||
return render(request, 'blog/register.html', {'form': form})
|
||||
|
||||
|
||||
@login_required
|
||||
def add_post(request):
|
||||
if request.method == 'POST':
|
||||
form = PostForm(request.POST)
|
||||
if form.is_valid():
|
||||
post = form.save(commit=False)
|
||||
post.author = request.user
|
||||
post.save()
|
||||
return redirect('dashboard')
|
||||
else:
|
||||
form = PostForm()
|
||||
return render(request, 'blog/dashboard.html', {'form': form})
|
||||
|
||||
@login_required
|
||||
def edit_post(request, pk):
|
||||
post = get_object_or_404(Post, pk=pk, author=request.user)
|
||||
if request.method == 'POST':
|
||||
form = PostForm(request.POST, instance=post)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
return redirect('dashboard')
|
||||
else:
|
||||
form = PostForm(instance=post)
|
||||
return render(request, 'blog/edit_post.html', {'form': form, 'post': post})
|
||||
|
||||
@login_required
|
||||
def delete_post(request, pk):
|
||||
post = get_object_or_404(Post, pk=pk, author=request.user)
|
||||
post.delete()
|
||||
return redirect('dashboard')
|
||||
|
|
|
@ -26,4 +26,7 @@ urlpatterns = [
|
|||
path('logout/', views.logout_view, name='logout'),
|
||||
path('dashboard/', views.dashboard, name='dashboard'),
|
||||
path('register/', views.register, name='register'),
|
||||
path('add_post/', views.add_post, name='add_post'),
|
||||
path('edit_post/<int:pk>/', views.edit_post, name='edit_post'),
|
||||
path('delete_post/<int:pk>/', views.delete_post, name='delete_post'),
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue