django_md_blog/blog/views.py

46 lines
1.5 KiB
Python

from django.shortcuts import render , redirect
from .models import Post
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import UserCreationForm
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)
return render(request, 'blog/post_detail.html', {'post': post})
def login_view(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('dashboard')
else:
return render(request, 'blog/login.html', {'error': 'Invalid credentials'})
return render(request, 'blog/login.html')
def logout_view(request):
logout(request)
return redirect('login')
@login_required
def dashboard(request):
posts = Post.objects.filter(author=request.user)
return render(request, 'blog/dashboard.html', {'posts': posts})
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return redirect('login')
else:
form = UserCreationForm()
return render(request, 'blog/register.html', {'form': form})