моя форма отправляет GET вместо POST, я создал форму, которая получает ввод, и я хотел бы отправить ее в базу данных

#python #django #django-models #django-views #django-forms

Вопрос:

я задал этот вопрос, но он не был задан должным образом. я работаю над своим проектом электронной коммерции с использованием django. я создал форму, которая должна принимать входные данные и обновлять их в базе данных, но, к сожалению, она не отправляет никаких данных в базу данных, и хотя я указал действие для ПУБЛИКАЦИИ, но я получаю и публикую вместе в своем терминале

вот результат, который я получаю:

 [16/Jun/2021 18:09:23] "POST /cart/addcomment/1 HTTP/1.1" 302 0
[16/Jun/2021 18:09:23] "GET /en/cart/addcomment/1 HTTP/1.1" 302 0
URL: /media/product_images/iphone-compare-models-202010_GEO_US_eDOyoqO.jpeg
URL: /media/product_images/iphone-compare-models-202010_GEO_US_eDOyoqO.jpeg
[16/Jun/2021 18:09:23] "GET /en/cart/shop/iphone-12-pro/?

**models.py:**

class Comment(models.Model):
STATUS = (
    ('New', 'New'),
    ('True', 'True'),
    ('False', 'False'),
)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
subject = models.CharField(max_length=50, blank=True)
comment = models.CharField(max_length=250, blank=True)
rate = models.IntegerField(default=1)
ip = models.CharField(max_length=20, blank=True)
status = models.CharField(max_length=10, choices=STATUS, default='New')
create_at = models.DateTimeField(auto_now_add=True)
update_at = models.DateTimeField(auto_now=True)

def __str__(self):
    return self.subject

**views.py:**

def addcomment(request, id):
url = request.META.get('HTTP_REFERER')  # get last url
# return HttpResponse(url)
if request.method == 'POST':  # check post  
    form = CommentForm(request.POST)
    if form.is_valid():
        data = Comment()  # create relation with model
        data.subject = form.cleaned_data['subject']
        data.comment = form.cleaned_data['comment']
        data.rate = form.cleaned_data['rate']
        data.ip = request.META.get('REMOTE_ADDR')
        data. product_id = id
        current_user = request.user
        data.user_id = current_user.id
        data.save()  # save data to table
        messages.success(request, "Your review has ben sent. Thank you for your interest.")
        return HttpResponseRedirect(url)

return HttpResponseRedirect(url)


**forms.py:**

class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ['subject', 'comment', 'rate']

**admin.py:**

@admin.register(Comment)
class CommentAdmin(admin.ModelAdmin):
    list_display = ['subject', 'comment', 'status', 'create_at']
    list_filter = ['status']
    readonly_fields = ('subject', 'comment', 'user', 'product', 'rate', )

**html:**

   <div class="collapse" id="reviewForm">
      <form class="review-form" 
        action="/cart/addcomment/{{ product.id }}" method="post">
        {% csrf_token %}
        <div class="row">
          <div class="col-md-6">
            <div class="form-group">
              <label class="sr-only" for="reviewEmail">subject:</label>
              <input class="form-control form-control-sm" name="subject" type="text" placeholder="Your subject" required>
            </div>
          </div>
        </div>
        <div class="row">
          <div class="col-md-6">
            <label class="sr-only" for="reviewText">Review:</label>
            <textarea class="form-control form-control-sm" name="comment" rows="5" placeholder="Your review " required></textarea>
          </div>
        </div>
        <div class="row">
          <div class="col-md-6 d-flex justify-content-between"> 
            <div class="p-2">
              <div class="form-group">
                <div class="input-rating">
                    <strong class="">Please rate: </strong>
                    <div class="stars">
                        <input type="radio" id="star5" name="rate" value="5" /><label for="star5"></label>
                        <input type="radio" id="star4" name="rate" value="4" /><label for="star4"></label>
                        <input type="radio" id="star3" name="rate" value="3" /><label for="star3"></label>
                        <input type="radio" id="star2" name="rate" value="2" /><label for="star2"></label>
                        <input type="radio" id="star1" name="rate" value="1" /><label for="star1"></label>
                    </div>
                </div>
            </div>
            </div>
            
            <div class="p-2 d-flex justify-content-between">
              {% if user.id is not None %}
              <button class="btn btn-outline-dark" type="submit">
                Post Review
              </button>
              {% else %}
                  You must be logged in to post a review
              {% endif %}
            </div>
          </div>
        </div>
      </form>
    </div><br>
 

форма.ошибки:описание изображения формы.ошибок здесь

Комментарии:

1. print(form.errors) в нижней части представления (перед последним перенаправлением) будет указано, что не так с формой.