Method Not Allowed (GET):

Подскажите пожалуйста и объясните. Не судите строго - я совсем новичок и многого не понимаю еще.

Устоновлены: введите сюда описание изображения

  • Операционная система: openSUSE Tumbleweed 20211227
  • Версия KDE Plasma: 5.23.4
  • Версия KDE Frameworks: 5.89.0
  • Версия Qt: 5.15.2
  • Версия ядра: 5.15.8-1-default (64-бита)
  • Графическая платформа: X11
  • Процессоры: 2 × AMD A4-6300 APU with Radeon(tm) HD Graphics
  • Память: 13,6 ГиБ ОЗУ
  • Графический процессор: AMD ARUBA

Если я использую классы, то получаю ошибку:

  • Method Not Allowed (GET): /posts/
  • Method Not Allowed: /posts/
  • [29/Dec/2021 23:16:04] "GET /posts/ HTTP/1.1" 405 0

Если использую функции и убираю as_view(), то все работает. В чем моя ошибка?

views.py

from django.shortcuts import render
from django.views.generic.base import View

# Create your views here.
from .models import post_class


class index_views(View):
    def index(self, request):
        return render(request, 'main_app/index.html')


class post_views(View):
    def get_post(self, request):
        posts = post_class.objects.all()
        return render(request, 'main_app/posts_list.html', {'posts_list': posts})


def index(request):
    posts = post_class.objects.all()
    return render(request, 'main_app/index.html')


def post(request):
    posts = post_class.objects.all()
    return render(request, 'main_app/posts_list.html', {'posts_list': posts})

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('index/', views.index, name='index'),
    path('posts/', views.post, name='posts'),
    path('index_views/', views.index_views.as_view(), name='index_views'),
    path('posts_views/', views.post_views.as_view(), name='posts_views'),
]

index.html

<meta charset="UTF-8">
<title>Главная</title> </head> <body> <br>Главная страница (index.html)<br> {% block content %}{% endblock %} </body> </html>

posts_list.html

{% extends 'main_app/index.html' %}

{% block content %}
    {% for post in posts_list %}
    {{ post.post_title }}
    {% endfor %}
{% endblock %}

models.py

from django.db import models
from mptt.models import MPTTModel, TreeForeignKey

# Create your models here.

from django.contrib.auth.models import User
from django.db.models.fields import SlugField

from django_ckeditor_5.fields import CKEditor5Field


class category_class(MPTTModel):
    category_name = models.CharField(max_length=150, unique=True)
    category_url = models.SlugField(max_length=150, unique=True)
    parent = TreeForeignKey(
        'self',
        related_name='category_children_related',
        on_delete=models.SET_NULL,
        null=True,
        blank=True
    )
    def __str__(self):
        return self.category_name

class tag_class(models.Model):
    tag_name = models.CharField(verbose_name='Тэг', max_length=150, unique=True)
    tag_slug = SlugField(max_length=150, unique=True)
    def __str__(self):
        return self.tag_name


class post_class(models.Model):
    post_title = models.CharField(verbose_name='Заголовок(150)', max_length=150)
    post_content = CKEditor5Field(verbose_name='Пост', config_name='extends')
    post_author = models.ForeignKey(User, related_name='post_author_related', verbose_name='Имя автора(50 симв.)', on_delete=models.SET_NULL,
                                    null=True)
    public_date = models.DateTimeField(verbose_name='Дата публикации', auto_now_add=True)
    change_date = models.DateTimeField(verbose_name='Дата публикации', auto_now=True)
    post_category = models.ForeignKey(category_class, verbose_name='Категория', related_name='post_category_related', on_delete=models.SET_NULL,
                                      null=True)
    post_tags = models.ManyToManyField(tag_class, verbose_name='Тэги', related_name='post')
    post_url = models.SlugField(max_length=150, null=True, blank=False, unique=True)
    on_moderation = models.BooleanField(verbose_name='На модерации', default=True)

    def __str__(self):
        return self.post_title
Вернуться на верх