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