我想提出一個黑客新聞克隆在Django作爲一個TUTS +課程[Git Repo]Django的 - 通過ManyToManyKey
教views.py文件中,投票視圖訪問來自django.contrib中的User類模型,我嘗試使用此代碼通過檢查用戶是否已經喜歡該故事來增加安全性。
@login_required
def vote(request):
story = get_object_or_404(Story, pk=request.POST.get('story'))
user = request.user
if user.is_authenticated() and story not in user.liked_stories:
story.points += 1
story.save()
user.liked_stories.add(story)
user.save()
return HttpResponse()
但它給我這個錯誤:
NameError: global name 'liked_stories' is not defined
[18/Aug/2013 19:26:43] "POST /vote/ HTTP/1.1" 500 11148
我能夠在index
鑑於vote
視圖中使用user.liked_stories
爲什麼不呢?
錯誤:
Internal Server Error: /vote/
Traceback (most recent call last):
File "/home/sourabh/.virtualenvs/django/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 115, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/home/sourabh/.virtualenvs/django/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py", line 25, in _wrapped_view
return view_func(request, *args, **kwargs)
File "/home/sourabh/Code/django_apps/HackerNews/stories/views.py", line 53, in vote
if user.is_authenticated() and story not in liked_stories:
NameError: global name 'liked_stories' is not defined
[18/Aug/2013 20:08:35] "POST /vote/ HTTP/1.1" 500 11161
錯誤說全局名'liked_stories'沒有定義,好像你的腳本在別的地方使用這個未定義的變量?那麼哪一行代碼會引發錯誤? – Jingo
你發佈的代碼不會給這個錯誤。你必須自己引用'liked_stories',而不需要通過'user'。 –
它在'user.liked_stories'部分。如果我刪除'和故事不在user.liked_stories',一切工作正常。我添加了完整的錯誤。 – Sourabh