2017-07-26 48 views
1

我面對這個錯誤在Django的Python:我不斷收到在Django以下錯誤: 「UnboundLocalError在/ MyApp的/」

「UnboundLocalError在/ MyApp的/」 局部變量 '專輯' 分配

之前引用

我創建的意見models.py文件並導入一個類,但面對這個錯誤

下面是這兩個文件的完整代碼:

Models.py

from django.db import models 

from django.db import models 

class album(models.Model): 
    artist = models.CharField(max_length=250) 
    title = models.CharField(max_length=500) 
    gender = models.CharField(max_length=100) 

    def __str__(self): 
     return self.artist+'--'+self.title 

views.py

from django.http import HttpResponse 
from .models import album 

def myapp(request): 
    all_albums = album.objects.all() 
    title = album.artist 
    html = '' 
    for album in all_albums: 
     url = '/myapp/' + str(album.id) + '/' 
     html += '<a href="' + url + '">' + title + '</a><br>' 
    return HttpResponse(html) 
+0

您正在使用'album'變量多次。一次作爲模型,其他時間作爲一個實例。模型名稱理想情況下應該是CamelCased。 –

+0

你能解釋一下如何在CamelCased中編寫模型代碼嗎? – habib

+0

您只需將'class album(models.Model):'更改爲'class Album(models.Model):',如[我的答案]中所述(https://stackoverflow.com/questions/45320036/i-keep-getting -the跟隨誤差功能於Django的unboundlocalerror-AT-MYAPP#答案-45320209)。但單靠這一點無法解決問題。 –

回答

0

副本在你看來這是完全粘貼

from django.http import HttpResponse 
from .models import album 

def myapp(request): 
    all_albums = album.objects.all() 
    html = '' 
    for al in all_albums: 
     url = '/myapp/' + str(al.id) + '/' 
     html += '<a href="' + url + '">' + al.artist + '</a><br>' 
    return HttpResponse(html) 
+0

謝謝!問題解決了 – habib

1

改變這樣的觀點,循環,更好地利用循環變量名稱不喜歡模型內部

def myapp(request): 
    all_albums = album.objects.all() 
    html = '' 
    for album in all_albums: 
     url = '/myapp/' + str(album.id) + '/' 
     html += '<a href="' + url + '">' + album.artist + '</a><br>' 
    return HttpResponse(html) 
2

移動標題

html = '' 
for album_data in all_albums: 
    url = '/myapp/' + str(album_data.id) + '/' 
    title = album_data.artist 
    html += '<a href="' + url + '">' + title + '</a><br>' 
return HttpResponse(html) 
+0

我在循環中移動標題,但仍然給出錯誤 – habib

+0

同樣的錯誤?如果沒有顯示,並且可能會很好顯示全新的代碼 –

0

您將多個變量的名稱用作album,一次用作模型,其他時間用作實例。模型名稱理想情況下應該是CamelCased。在更正型號名稱後,請在for循環內移動title變量分配。只有做後者才能解決你現在的問題,但如果你堅持造型指南(PEP-8),你將不會面臨這樣的問題。

models.py

... 
class Album(models.Model): 
    artist = models.CharField(max_length=250) 
... 

views.py

... 
from .models import Album 

def myapp(request): 
    all_albums = Album.objects.all() 
    html = '' 
    for album in all_albums: 
     title = album.artist 
     url = '/myapp/' + str(album.id) + '/' 
     html += '<a href="' + url + '">' + title + '</a><br>' 
... 
+0

仍然不能正常工作 – habib

+0

@habib然後您需要發佈完整的堆棧跟蹤。此外,如果您使用建議的更改更新了代碼,請編輯您的問題以添加更新後的代碼。 –

相關問題