Python 在/create#u播放列表/局部变量处取消绑定LocalError';播放列表';分配前参考
以下是我的视图.py:Python 在/create#u播放列表/局部变量处取消绑定LocalError';播放列表';分配前参考,python,html,django,forms,exception,Python,Html,Django,Forms,Exception,以下是我的视图.py: def create_playlist(request): form = PlaylistForm(request.POST or None) if form.is_valid(): playlist = form.save(commit=False) playlist.name = request.name context={ 'playlist':playlist,
def create_playlist(request):
form = PlaylistForm(request.POST or None)
if form.is_valid():
playlist = form.save(commit=False)
playlist.name = request.name
context={
'playlist':playlist,
'name':playlist_name,
}
return render(request, 'create_playlist.html', context)
playlist.save()
context = {
"form": form,
}
return render(request, 'create_playlist.html', {'form': form,})
我有一个Playlist
和forms.py
模型,其中包含播放列表模型的所有字段。我希望用户能够创建自己的播放列表,我为此制作了此列表,但在编译时,它会出现以下错误:
UnboundLocalError at /create_playlist/
local variable 'playlist' referenced before assignment
Request Method: GET
Request URL: http://localhost:8000/create_playlist/
Django Version: 1.9.6
Exception Type: UnboundLocalError
Exception Value:
local variable 'playlist' referenced before assignment
编辑:WSGIRequest对象没有属性“name”
这是我的模特
class Playlist(models.Model):
name = models.CharField(max_length=200, null=False, blank=False,default='')
songs = models.ManyToManyField('Song')
def __str__(self):
return self.name
这是我的forms.py:
class PlaylistForm(forms.ModelForm):
class Meta:
model=Playlist
fields = ['name', 'songs' ]
您得到的错误是因为以下行。它在
if表单之外。是否有效():
块:
playlist.save()
我想您希望将它放在if
块中,然后使用render
返回响应:
if form.is_valid():
playlist = form.save(commit=False)
playlist.name = request.name
playlist.save()
context={
'playlist':playlist,
'name':playlist_name,
}
return render(request, 'create_playlist.html', context)
另外,请注意,
request.name
不是已知的语法 如果表单无效,则不会定义播放列表
这样做:
def create_playlist(request):
form = PlaylistForm(request.POST or None)
if form.is_valid():
playlist = form.save(commit=False)
playlist.name = request.name
playlist.save()
context={
'playlist':playlist,
'name':playlist_name,
}
return render(request, 'create_playlist.html', context)
context = {
"form": form,
}
return render(request, 'create_playlist.html', {'form': form,})
playlist
在范围内定义,而您也在范围外使用它。如果语句不满足,则可能会发生此错误。当我单击提交时,它返回:“WSGIRequest”对象没有属性“name”。谢谢,伙计,它工作了。但是当我单击提交时,它返回:“WSGIRequest”对象没有属性“name”,您如何将此name
传递给视图?您添加的是表单和模型。它仍然没有告诉我们,当您已经在使用表单时,为什么要使用request.name
。那么,我如何才能获得用户刚刚创建的播放列表名称呢?您必须已经在表单本身中获得了。如果您阅读django文档并在那里练习示例,那将是最好的。这将是一个很好的学习练习。