我创建了一个审核系统,当我要提交审核时出现错误 In my views.py:个
def ajex_add_review(request,pid):
product=Product.objects.get(pk=pid)
user=request.user
review=ProductReview.objects.create(
user=user,
product=product,
review=request.POST['review'],#1
rating=request.POST['rating'],#2
)
context={
'user':user.username,
'review':request.POST['review'],#1
'rating':request.POST['rating'],#2
}
average_reviews=ProductReview.objects.filter(product=product).aggregate(rating=Avg("rating"))
return JsonResponse(
{
'bool':True,
'context':context,
'average_reviews':average_reviews,
}
)
我认为错误来自于这里.因为如果我注释掉其中的review(#1)或rating(#2)个,它就运行得很好
如果您需要我的js文件,那么 在function.js:年内
console.log("working");
$("#commentForm").submit(function(e){
e.preventDefault();
$.ajex({
data: $(this).serialize(),
method: $(this).attr("method"),
url: $(this).attr("action"),
dataType: "json",
success: function(response){
console.log("Comment Saved");
}
})
})
在我的product-detail.html
<div class="add-review">
<h3>Add Your Review</h3>
<form action="{% url 'core:ajex_add_review' p.id %}" method="POST" id="commentForm">
{% csrf_token %}
{{review_form.rating}}
</form>
<br>
<form action="{% url 'core:ajex_add_review' p.id %}" method="POST" id="commentForm">
{% csrf_token %}
{{review_form.review}}
<button type="submit" class="btn">Submit</button>
</form>
<div class="rating-bar">
<div class="bar">
<div class="fill" style="width: 80%;"></div>
</div>
<div class="bar-label"><i>{{average_rating.rating|floatformat:1}} out of 5.0</i></div>
</div>
</div>
所以请帮我解决这个问题.我的缩进是正确的. 以及最后的My error is:
System check identified 2 issues (0 silenced).
March 08, 2024 - 01:45:45
Django version 4.1.13, using settings 'ecomprj.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Internal Server Error: /ajex-add-review/3/
Traceback (most recent call last):
File "C:\Users\Sagarmoy Sadhukhan\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\utils\datastructures.py", line 84, in __getitem__
list_ = super().__getitem__(key)
^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: 'rating'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Sagarmoy Sadhukhan\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\core\handlers\exception.py", line 56, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Sagarmoy Sadhukhan\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Sagarmoy Sadhukhan\Desktop\django ecom web\ecomprj\core\views.py", line 114, in ajex_add_review
rating=request.POST['rating'],
~~~~~~~~~~~~^^^^^^^^^^
File "C:\Users\Sagarmoy Sadhukhan\AppData\Local\Programs\Python\Python311\Lib\site-packages\django\utils\datastructures.py", line 86, in __getitem__
raise MultiValueDictKeyError(key)
django.utils.datastructures.MultiValueDictKeyError: 'rating'
[08/Mar/2024 01:45:46] "POST /ajex-add-review/3/ HTTP/1.1" 500 75801