NameError at /post/category/
Ловлю ошибку - NameError at /post/category/. Хотя по коду вроде всё верно.
models.py:
from django.contrib.auth.models import User
from django.db import models
class Post(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE,
blank=True, null=True)
title = models.CharField(max_length=255)
text = models.TextField()
created_date = models.DateTimeField(auto_now_add=True)
views = models.PositiveIntegerField(default=0)
like = models.PositiveIntegerField(default=0)
enabled = models.BooleanField(default=False)
category = models.ForeignKey(
"Category", on_delete=models.CASCADE, blank=True, null=True)
def __str__(self):
return f'{self.title}'
class Comment(models.Model):
post = models.ForeignKey(
Post, on_delete=models.PROTECT, blank=True, null=True)
author = models.ForeignKey(
User, on_delete=models.CASCADE, blank=True, null=True)
text = models.TextField()
created_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f'{self.text}'
class Category(models.Model):
title = models.TextField()
enabled = models.BooleanField(default=False)
def __str__(self):
return f'{self.title}'
views.py:
from blog.forms import PostForm
from blog.models import Post
from django.http import Http404
from django.shortcuts import get_object_or_404, redirect, render
# Create your views here.
def post_list(request):
posts = Post.objects.filter(enabled=True)
return render(request, "blog/post_list.html", {"posts": posts})
def post_detail(request, post_pk):
post = get_object_or_404(Post, pk=post_pk)
post.views += 1
post.save()
return render(request, "blog/post_detail.html", {"post": post})
def post_new(request):
if request.method == "GET":
form = PostForm()
return render(request, "blog/new_post.html", {"form": form})
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('post_detail', post_pk=post.pk)
def post_edit(request, post_pk):
post = Post.objects.filter(pk=post_pk).first()
if not post:
raise Http404("Post not found")
if request.method == "GET":
form = PostForm(instance=post)
return render(request, "blog/post_edit.html", {"form": form})
if request.method == "POST":
form = PostForm(request.POST, instance=post)
if form.is_valid():
post = form.save()
return redirect('post_detail', post_pk=post.pk)
def post_delete(request, post_pk):
post = get_object_or_404(Post, pk=post_pk)
post.delete()
return redirect("post_list")
def post_like(request, post_pk):
post = get_object_or_404(Post, pk=post_pk)
post.like += 1
post.save()
return render(request, "blog/post_detail.html", {"post": post})
def post_draft(request):
posts = Post.objects.filter(enabled=False)
return render(request, "blog/post_draft.html", {"posts": posts})
def post_public(request, post_pk):
post = get_object_or_404(Post, pk=post_pk)
post.enabled = True
post.save()
return render(request, "blog/post_detail.html", {"post": post})
def category_list(request):
categorys = Category.objects.all()
return render(request, "blog/category_list.html", {'categorys': categorys})
def category_in_list(request, category_id):
posts = Post.objects.filter(category=category_id)
return render(request, "blog/post_list.html", {'posts': posts})
urls.py:
from django.urls import path, include
from blog.views import (category_in_list, category_list, post_delete,
post_detail, post_draft, post_edit, post_like,
post_list, post_new, post_public)
urlpatterns = [
path('list/', post_list, name="post_list"),
path('detail/<int:post_pk>', post_like, name="post_like"),
path('detail/<int:post_pk>/', post_detail, name="post_detail"),
path('new/', post_new, name="post_new"),
path('edit/<int:post_pk>/', post_edit, name="post_edit"),
path('delete/<int:post_pk>/', post_delete, name="post_delete"),
path('draft/', post_draft, name="post_draft"),
path('Publish a post/<int:post_pk>/', post_public, name="post_public"),
path('category/', category_list, name='category_list'),
path('category/<int:category_id>', category_in_list,
name='category_in_list'),
]