2017-04-14 50 views
0

这里之前引用/ create_playlist /局部变量“播放列表”是我的views.py:UnboundLocalError在分配

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其中包含了播放列表model.I的各个领域要用户可以创建自己的播放列表,并为我做了这个,但是当我编译它,它给了我这个错误:

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”对象有没有属性‘名’

这里是我的models.py

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' ] 
+0

''playlist'范围if'和你外面使用它。如果'if'语句不满足,这个错误可能会发生 – kuro

回答

0

你得到,因为下面一行的错误。这是if form.is_valid():块之外:

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不是已知的语法。

+0

感谢队友,它的工作。但是当我点击提交,它返回:'WSGIRequest'对象没有属性'名称' – blacklight

+1

你是如何传递这个'名称'风景? – AKS

+1

你添加的是表单和模型。它仍然没有告诉我们为什么当你已经使用表单时你会使用'request.name'。 – AKS

0

如果表单无效,则不会定义playlist

这样做:内部定义

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,}) 
+0

感谢队友,它工作。但是当我点击提交时,它会返回:'WSGIRequest'对象没有属性'name' – blacklight

相关问题