问题描述
我在 django 上的博客帖子中发表了评论,当我在“名称”字段和“正文”字段中输入数据时,然后按“提交”会出现此错误
POST /post/29/ HTTP/1.1" 405 0
models.py
from django.db import models
from django.urls import reverse
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
class Post(models.Model):
published = None
title = models.CharField(max_length=200)
author = models.ForeignKey('auth.User',on_delete=models.CASCADE,)
body = models.TextField()
header_image = models.ImageField(blank=True,null=True,upload_to="images/")
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post_detail',args=[str(self.id)])
class Comment(models.Model):
post = models.ForeignKey(Post,related_name="comments",on_delete=models.CASCADE)
name = models.CharField(max_length=255,default="Some String")
body = models.TextField(max_length=255,blank=True)
#date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
return '%s - %s' % (self.post.title,self.name)
forms.py
from django.forms import ModelForm
from .models import Comment
class CommentForm(ModelForm):
class Meta:
model = Comment
fields = ['name','body']
views.py
from django.shortcuts import render,redirect
from django.views.generic import ListView,DetailView
from django.views.generic.edit import CreateView,UpdateView,DeleteView
from django.urls import reverse_lazy
from .forms import CommentForm
from .models import Post
class BlogListView(ListView):
model = Post
template_name = 'home.html'
context_object_name = 'posts'
paginate_by = 2
queryset = Post.objects.all()
#paginate_by = 2
#model = Contact
class BlogDetailView(DetailView):
model = Post
template_name = 'post_detail.html'
class BlogCreateView(CreateView):
model = Post
template_name = 'post_new.html'
fields = ['title','author','body','header_image']
class BlogUpdateView(UpdateView):
model = Post
template_name = 'post_edit.html'
fields = ['title','header_image']
class BlogDeleteView(DeleteView):
model = Post
template_name = 'post_delete.html'
success_url = reverse_lazy('home')
@property
def image_url(self):
"""
Return self.photo.url if self.photo is not None,'url' exist and has a value,else,return None.
"""
if self.image:
return getattr(self.photo,'url',None)
return None
def detail(request,slug):
post = Post.objects.get(slug=slug)
if request.method == 'POST':
form = CommentForm(request.POST or None)
if form.is_valid():
obj = form.save(commit=False)
obj.post = post
obj.save()
return redirect('detail',slug=post.slug)
else:
form = CommentForm()
context = {
'post': post,'form': form
}
return render(request,'post_delete.html',context)
myblog/urls.py
from django.urls import path
from .views import (
BlogListView,BlogDetailView,BlogCreateView,BlogUpdateView,BlogDeleteView,)
urlpatterns = [
path('post/new/',BlogCreateView.as_view(),name='post_new'),path('post/<int:pk>/',BlogDetailView.as_view(),name='post_detail'),path('post/<int:pk>/edit/',BlogUpdateView.as_view(),name='post_edit'),path('post/<int:pk>/delete/',BlogDeleteView.as_view(),name='post_delete'),path('',BlogListView.as_view(),name='home'),]
blog/urls.py
from django.contrib import admin
from django.urls import path,include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/',admin.site.urls),path('accounts/',include('django.contrib.auth.urls')),include('accounts.urls')),include('myblog.urls')),path('comment/',include('comment.urls')),path('api/',include('comment.api.urls'))
]+ static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
post_detail.html
{% extends 'base.html' %}
{% block content %}
<div class="post-entry">
<h2>{{ post.title }}</h2>
<p>{{ post.body|urlize }}</p>
</div>
<p><a href="{% url 'post_edit' post.pk %}">+ Edit Blog Post</a></p>
<p><a href="{% url 'post_delete' post.pk %}">+ Delete Blog Post</a></p>
{% if post.header_image %}
<p><img src="{{post.header_image.url}}"></p>
{% else %}
<p></p>
{% endif %}
{% for comm in post.commentpost_set.all%}
{{ comm.user }} <br>
{{ comm.text }} <br><br>
{% endfor %}
<article class="content" >
<br><hr>
<h2>Add a comment</h2>
<form method="post" action=".">
{% csrf_token %}
{{ form.as_table }}
<p>Name: </p>
<input name="Name" type="text">
<p>Body: </p><textarea></textarea><br><br>
<input type="submit" value="Submit">
</form>
</article>
{% endblock content %}
我是 python 和 django 的新手,不要对代码中的混乱感到惊讶
很高兴为您提供帮助,谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)