#python #django #django-models #django-views #django-forms
Вопрос:
Я пытаюсь разрешить пользователям создавать комментарии из listview в социальном приложении, над которым я работаю в настоящее время, но мне трудно разработать шаблон. Я продолжаю получать сообщение об ошибке 404 при попытке загрузить представление списка. Вот представление списка форм, от которого унаследовано мое представление списка записей.
class FormListView(FormMixin, ListView):
def get(self, request, *args, **kwargs):
if request.method == 'GET':
post_id = request.GET.get('post_id')
comment = request.GET.get('comment', False)
post_obj = get_object_or_404(Post, pk=post_id)
session_obj = User.objects.get(username=request.user.username)
create_comment = Comment.objects.create(
post=post_obj,
user=session_obj,
comment=comment)
create_comment.save()
# From ProcessFormMixin
form_class = self.get_form_class()
self.form = self.get_form(form_class)
# From BaseListView
self.object_list = self.get_queryset()
allow_empty = self.get_allow_empty()
if not allow_empty and len(self.object_list) == 0:
raise Http404(_(u"Empty list and '%(class_name)s.allow_empty' is False.")
% {'class_name': self.__class__.__name__})
context = self.get_context_data(object_list=self.object_list, form=self.form)
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
if request.method == "POST":
description = request.POST['description']
pic = request.FILES.get('pic', False)
#tag = request.FILES['tag']
user_obj = User.objects.get(username=request.user.username)
post_data = Post(username=user_obj,pic=pic,description=description,)
post_data.save()
messages.success(request, f'Posted Successfully')
return redirect('feed:feed')
return self.get(request, *args, **kwargs)
По одной странной причине я могу создать новое сообщение из списка сообщений, но комментарий был для меня проблемой в течение последних двух недель, и я смотрю здесь, но, похоже, не могу найти решение, которое подходит мне.
class PostListView(FormListView):
model = Post
form_class = NewPostForm
form_class = NewCommentForm
Это моя модель комментариев
class Comment(models.Model):
post = models.ForeignKey(Post, related_name='comments', on_delete=models.CASCADE)
username = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='comments', on_delete=models.CASCADE)
comment = models.CharField(max_length=500)
comment_date = models.DateTimeField(auto_now_add=True)
Мой Form.py
class NewCommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ['comment']
Вот мой URL-адрес для PostListView.
path('', PostListView.as_view(), name='feed'),
Комментарии:
1. вам нужно будет показать свой
urls.py
и URL-адрес, который дает вам 404.2. Я просто делюсь своим URL @Abhyudai
3. как называется приложение, в котором это находится?
4. Название приложения-лента! @Loukik