我正在尝试允许用户在注销时喜欢一个视频。我使用@login_required强制用户登录,将视频保存到他们的帐户,然后重定向回他们所在的页面。我有个错误说
UnboundLocalError at /loggedout_fav/
local variable 'video' referenced before assignment
在loggedout\u fav下的回流线上。我在视图中放置了一个print语句,但是控制台也没有任何内容被打印。有什么建议吗?在
url(r'^loggedout_fav/', 'loggedout_fav'),
def loggedout_fav(request):
if 'video_add_loggedout' in request.POST:
video = request.POST['video_add_loggedout']
print video
print 'test'
try:
s = Everything.objects.get(profile = request.user, video = request.POST['video_add_loggedout'], playlist = 'Favorites', platform = 'youtube')
print "already exists"
except:
p = Everything(profile = request.user, video = request.POST['video_add_loggedout'], playlist = 'Favorites', platform = 'youtube')
p.save()
return HttpResponseRedirect(reverse('reserve.views.trending_video_player', kwargs={'author':'youtube', 'video':video}))
def trending_video_player(request,author,video):
...
我相信jpic所说的很可能是问题所在。我发布了一个单独的答案来澄清这个问题:UnboundLocalError是一个python错误,这意味着在定义变量之前,您可以在代码的某个地方访问它。在
在您的“loggedout_fav”视图代码中,我看到您试图访问最后一行中的“video”变量。当
if 'video_add_loggedout' in request.POST
语句不为True(因此嵌套块未执行)时,“video”变量将不会初始化,并且将引发此异常。实际上,这意味着您试图访问您的视图,而不发布一个“video_add_loggedout”变量。我将重新组织观点如下:上面还演示了如何使用
get_or_create
方法清理代码。在将值保存到会话。https://docs.djangoproject.com/en/dev/topics/http/sessions/
确保在登录用户之前获取会话中的值,这样就不会丢失它们。在
你用了'id'而不是'name'!所以这不是真的:
而且
^{pr2}$video
从未设置过,所以它阻塞了(顺便说一句,您应该发布stacktrace,我不得不将其反转):首先,您可以修复Python,如下所示:
当然,也要修复HTM,这:
应该是:
相关问题 更多 >
编程相关推荐