Django ошибка 405
Простая форма в шаблоне которая отправляет данные через get запрос
<!DOCTYPE html>
{% load static %}
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
</body>
<div class="centr">
<h1>{{post.title}}</h1>
<p>{{post.text}}</p>
<span class="day">{{post.pub_date}}</span><br />
<a href={{post.get_absolute_url}}><img class="like" height="20" src="{% static "myblog/images/licke.jpg" %}" alt="h"></a>
<h2>Enter your comment</h2>
<form ction="{% url 'comment' post.pk %}" method="get">
{% csrf_token %}
<label>Name:</label><br />
<input placeholder="name" type="text" name="author" /><br />
<label>Email:</label><br />
<input placeholder=" Email" type="text" name="email" /><br />
<label>Comment:</label><br />
<textarea name="comment" cols="30" rows="10" name="text"></textarea><br />
<button type="submit">send</button>
</form>
</div>
</body>
</html>
стоит только мне написать method="post" как браузер выдаёт 405 ошибку Method Not Allowed
views:
from .models import User,Post,Comment
from django.views.generic import ListView, DetailView
from django.views.generic.base import View
# Create your views here.
class Index_detail(DetailView):
model = Post
slug_field = 'url'
template_name = 'myblog/index_detail.html'
context_object_name = 'post'
class All_post(ListView):
model = Post
template_name = 'myblog/index.html'
context_object_name = 'post'
class Add_Comment(View):
def post(self, request, pk):
print(request.POST)
model = Comment.object.get(pk = pk)
return redirect(model.get_absolute_url)
models:
from django.db import models
from django.urls import reverse
# Create your models here.
class User(models.Model):
name = models.CharField(max_length = 30)
register_date = models.DateField(auto_now_add = True)
def __str__(self):
return self.name
class Post(models.Model):
title = models.CharField(max_length = 200)
text = models.TextField()
pub_date = models.DateField(auto_now_add = True)
like = models.IntegerField(null = True, blank = True, default = 0)
author = models.ForeignKey(User, related_name = 'author', on_delete=models.CASCADE, null=True, blank = True)
url = models.SlugField(max_length = 100, unique = True, null = True, blank = True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('detail', kwargs = {'slug' : self.url })
#post = ... как-то нашли пост
#comments = post.comments.all()
class Comment(models.Model):
author = models.ForeignKey(
User,
on_delete=models.CASCADE,
# параметр related_name нужен, если хотите
# чтобы из модели User можно было достать все комментарии
related_name='comments',
#если коллекция комментариев в User не нужна - укажите
# вместо имени '+' как в следующей строке
#related_name='+',
)
text = models.TextField()
post = models.ForeignKey(
Post,
on_delete=models.CASCADE,
related_name='comments'
)
email = models.CharField(max_length = 100)
data = models.DateField(auto_now_add = True)
def __str__(self):
if len(self.text) <= 15:
return self.text
else:
return self.text[:16]
urls:
from django.contrib import admin
from django.urls import path
from myblog import views
urlpatterns = [
path('admin/', admin.site.urls),
path('posts/<slug:slug>/', views.Index_detail.as_view(), name = 'detail'),
path('',views.All_post.as_view(), name = 'index'),
path('comment/<int:pk>',views.Add_Comment.as_view(), name = 'comment')
]
вопрос почему при использовании post вылетает ошибка