Oluşturduğum formda bir yorum göndermeye çalışırken bu hatayla karşılaşıyorum. , Başlık olarak,ilişkisiz yöntem comment() GetPostView örneğiyle ilk bağımsız değişken olarak çağrılmalıdır (bunun yerine WSGIRequest örneği var)
app_name = 'blog'
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name = 'index'),
url(r'^categories/$', views.CategoriesView.as_view(), name = 'categories'),
url(r'^post/(?P<id>[0-9]+)/$', views.GetPostView.as_view(), name = 'post'),
url(r'^post/(?P<id>[0-9]+)/comment$', views.GetPostView.comment)
]
ve: Buraya
class GetPostView(TemplateView):
template_name = 'blog/post.html'
def get(self, request, id):
return render(request, self.template_name, {
'post': Post.objects.get(pk = id),
'comments': Comment.objects.filter(post = id),
'form': CommentForm()
})
def comment(self, request):
return HttpResponseRedirect(request.path)
, urls.py
:
Bu CommentForm
ve test amaçlı bir HttpResponseRedirect
dönen bir yöntem ile sınıf görünüşüdür formu gönderdiğimde hata görüntülenir:
ilişkisiz yöntem c omment() ilk argüman olarak GetPostView örneği ile çağrılmalıdır
Django yeniyim ve bana yardım için başka bir durum hem mayın bulamadı (WSGIRequest örneği yerine var).
** Çözüm **
Daniel kredi ve puan hak çünkü benim söz konusu çözüm koyacağız.
"""
GetPostView
"""
class GetPostView(TemplateView):
"""
Render the view for a specific post and lists its comments
"""
template_name = 'blog/post.html'
def get(self, request, id):
return render(request, self.template_name, {
'post': Post.objects.get(pk = id),
'comments': Comment.objects.filter(post = id).order_by('-created_at'),
'form': CommentForm()
})
def write_comment(request, post_id):
"""
Write a new comment to a post
"""
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
post = Post.objects.get(pk = post_id)
post.n_comments += 1
post.save()
comment = Comment()
comment.comment = request.POST['comment']
comment.created_at = timezone.now()
comment.modified_at = timezone.now()
comment.post_id = post_id
comment.user_id = 2
comment.save()
else:
form = CommentForm()
return redirect(reverse('blog:post', args = (post_id,)))
Ve yeni url
: Yalnızca yorumlara izin gibi mükemmel hale getirmek için yapılacak çok şey olmasına rağmen
app_name = 'blog'
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name = 'index'),
url(r'^categories/$', views.CategoriesView.as_view(), name = 'categories'),
url(r'^post/(?P<id>[0-9]+)/$', views.GetPostView.as_view(), name = 'post'),
url(r'^post/(?P<post_id>[0-9]+)/comment$', views.write_comment)
]
bir var onun cevabını ardından, bu yaparak çözdü kullanıcı giriş yapmış, bu iyi bir başlangıç.
Geri kalan parçanın geri kalanını verebilir misiniz? – jonrsharpe