我堅持Raiting模型爲我的項目(問題答案網站,像stackoverflow)。我用Tango的這個guid和Django http://www.tangowithdjango.com/book17/chapters/ajax.html來添加像ajax一樣的按鈕。然後我決定爲喜歡和解決方案創建特殊模型。我不知道,我怎麼能做到這一點。所有的 首先,我嘗試這樣做評級模型Django
class Rating(models.Model):
user = models.ForeignKey(CustomUser)
answer = models.ForeignKey(Answer)
like = models.IntegerField(default=0)
resolve = models.IntegerField(default=0)
url(r'add_like/(?P<answer_pk>[0-9]+)/$', views.add_like, name='add_like'),
def add_like(request, answer_pk):
if request.POST:
ans_rait = Rating.objects.get(answer=answer_pk)
ans_rait.like += 1
ans_rait.save()
return redirect(reverse(get_question))
在我的問題頁面,我顯示循環模式問題和答案
{% for answer in answers %}
<div class="container-fluid no-padding">
{{ answer.text }}
</div>
{% if user.is_authenticated %}
<form method = "post" action = "{% url 'add_like' %}">
<button class="btn btn-default" type="submit"> like | {{ answer.rating.like }}
</button>
</form>
{% endif %}
請至少提前瞭解將像循環的邏輯。我試過很多東西,但不知道如何做到這一點
更新我想用戶的「混合」的解決方案:
當我點擊喜歡按鈕,我有例外:「轉讓之前局部變量‘ans_rait’引用」 。
當我在瀏覽器控制檯發佈的js腳本,然後點擊,我有錯誤:
「未捕獲的ReferenceError:未定義csrfToken」
「POST http://127.0.0.1:8000/questions/add_like 500(內部服務器錯誤)」
我決定問題是在創建模型評價的,我試圖像這樣的更新視圖代碼:
def add_like(request):
if request.POST:
answer_pk = request.POST.get('answer_pk')
ans_author = Answer.objects.get(pk=answer_pk)
if Answer.objects.filter(answer=answer_pk) is None:
Rating.objects.create(user=ans_author.author,
answer=ans_author.id, like=1, resolve=0)
data = {'message': 'Success'}
else:
ans_rait = Answer.objects.get(answer=answer_pk)
ans_rait.like += 1
ans_rait.save()
data = {'message': 'Success'}
return JsonResponse(data)
url: url(r'add_like$', views.add_like, name='add_like'),
,我有例外:「答案符合查詢不存在」
我想,我在邏輯混淆了,現在看來最好的解決方案是在Answer模型中添加「like」和「solve」極點,然後通過AnswerModel中的喜歡和計算來計算用戶評分。現在,我的模型看起來像這樣:
class Answer(models.Model):
text = models.TextField()
date = models.DateTimeField(default=datetime.datetime.now)
author = models.ForeignKey(CustomUser)
question = models.ForeignKey(Question)
能否請你列出你已經嘗試過的東西?我認爲這個教程很清楚如何做到這一點:http://www.tangowithdjango.com/book17/chapters/ajax.html#ajax-based-functionality – user1797792
我做了所有的指導,但我不喜歡它的方式循環工作。計數器在同一個按鈕上更新一次,在下一個,重新加載頁面之後更新,並且我的答案在重新加載後更改位置。我還沒有研究js,首先嚐試在django中構建這個解決方案。我認爲'喜歡'的特殊模型會更糟,如果我們發送數據,我們需要POST方法,不是嗎? –