Форма комментария не размещается при отправке в django - PullRequest
0 голосов
/ 01 мая 2020

У меня есть сайт блога, форма отправки комментария неожиданно перенаправляется на /post.

ошибка / вывод : перед нажатием кнопки отправить

  <WSGIRequest: GET '/post/2'>        -# my print statement in views.py
  fail                                -# my print statement in views.py
  [01/May/2020 11:28:43] "GET /post/2 HTTP/1.1" 200 14275

при нажатии кнопки отправки

Not Found: /post/
[2020-05-01 11:33:39,126] log: WARNING - Not Found: /post/
[01/May/2020 11:33:39] "POST /post/ HTTP/1.1" 404 2795

кнопка отправки - это тип отправки, и здесь есть все, что с ней связано, я застрял на этом некоторое время. И я добавил print () в views.py, чтобы найти, где проблема. Буду признателен за помощь

post. html

<form method="POST" action="." class="commenting-form">
                    {% csrf_token %}
                    <div class="row">
                      <div class="form-group col-md-12">
                        {{ form }}
                      </div>
                      <div class="form-group col-md-12">
                        <button type="submit" class="btn btn-secondary">Submit Comment</button>
                      </div>
                    </div>
</form>

views.py

def postview(request, my_id):
    most_recent = Posts.objects.order_by('-timestamp')[:3]
    category_count = get_category_count()
    post = get_object_or_404(Posts, id=my_id)

    form = CommentForm(request.POST or None)
    print(request)

    if request.method == "POST":
        print(form)
        if form.is_valid():
            form.instance.user = request.user
            form.instance.post = post
            form.save()
            print(form)
            return redirect(reverse('postdetail', kwargs={
                'my_id': post.pk
            }))
    else:
        print('fail')

    context = {
        'post': post,
        'most_recent': most_recent,
        'cat_count': category_count,
        'form': form
    }
    return render(request, 'post.html', context)

models.py

class Comment(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    timestamp = models.DateTimeField(auto_now_add=True)
    content = models.TextField()
    post = models.ForeignKey(
        'Post', related_name='comments', on_delete=models.CASCADE)

    def __str__(self):
        return self.user.username

forms.py

class CommentForm(forms.ModelForm):
    content = forms.CharField(widget=forms.Textarea(attrs={
        'class': 'form-control',
        'placeholder': 'Type your comment',
        'id': 'usercomment',
        'rows': '4'
    }))
    class Meta:
        model = Comments
        fields = ('content', )

1 Ответ

0 голосов
/ 01 мая 2020

В теге формы, атрибут действия, вместо использования "." используйте "" (пустая строка)

Вот фрагмент

<form action=""></form>

Или используйте абсолютный путь в атрибуте действия .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...