0

我在 django 中有一个表格,用于评级。如果用户将提交该表单,那么它将保存procuct_id并保存user_id在数据库中,以便我可以计算用户在登录后给出的评分。但是,当我提交此表单时,它正在显示302 found。所以我检查后HttpResponse它正在打印Hi,请检查我的代码并让我知道我在哪里弄错了。

这是我的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=250, blank=True)
    comment=models.CharField(max_length=50, blank=True)
    rate=models.IntegerField(default=1)
    ip=models.CharField(max_length=250, blank=True)
    status=models.CharField(max_length=10, choices=STATUS)
    created_at=models.DateField(auto_now_add=True)
    updated_at=models.DateField(auto_now=True)

    def __str__(self):
        return self.subject

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

这是我的views.py文件...

def addcomment(request,id):
    url = request.META.get('HTTP_REFERER') #get last url
    #return HttpResponse(url)
    if request.method == 'POST':
        form = CommentForm(request.POST)
        if form.is_valid():
            data = Comment() #create relation with model
            #data.name = form.cleaned_data['name'] #get form input data
            data.subject = form.cleaned_data['subject']
            data.comment = form.cleaned_data['comment']
            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 been Send. Thank you for your interest")
            return HttpResponse("Hello")

    return HttpResponse("Hi")

这是我的urls.py文件...

urlpatterns = [
    path('product/addcomment/<int:id>', views.addcomment, name='addcomment'),

]

这是我的product.html文件....

     <div class="tab-pane fade" id="top-review" role="tabpanel" aria-labelledby="review-top-tab">
                        {% if messages %}
                            {% for message in messages %}
                        <div class="alert alert-{{message.tags}}" role="alert">
                            {{ message }}
                        </div>
                            {% endfor %}
                        {% endif %}
                        <form class="theme-form" method="POST" action="/product/addcomment/{{ product.id }}">
                            {% csrf_token %}
                            <div class="form-row">
                                <div class="col-md-12">
                                    <label for="review">Review Title</label>
                                    <input type="text" class="form-control" name="subject" placeholder="Enter your Review Subjects" required="">
                                </div>
                                <div class="col-md-12">
                                    <label for="review">Review Comment</label>
                                    <textarea class="form-control" name="comment" placeholder="Wrire Your Comment Here"  rows="6"></textarea>
                                </div>
                                <div class="col-md-12">
                                    {% if user.id is not None %}
                                    <button class="btn btn-solid" type="submit">Submit Your Review</button>
                                         {% else %}
                                         You must be Loggedin to post a review.
                                    {% endif %}
                                </div>
                            </div>
                        </form>
                    </div>
4

1 回答 1

0

不用担心,你不需要修复任何东西。根据MDN

超文本传输​​协议 (HTTP)302 Found重定向状态响应代码指示请求的资源已临时移动到 Location 标头给出的 URL。

因此,建议仅将 302 代码设置为 GET 或 HEAD 方法的响应。

只要你不发布任何类型的数据,我认为你很好。

于 2020-07-30T04:33:46.207 回答