2017-07-26 6 views
1

私はDjangoのpythonでこのエラーに直面しています:割り当て私はジャンゴで、次のエラーを取得しておく: "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

ビューに貼り付けます複数回。一度はモデルとして、他の時はインスタンスとして。モデル名は理想的にはキャメルケースにする必要があります。 –

+0

キャメルケースにモデルコードを書く方法を教えてください。 – habib

+0

[my answer](https://stackoverflow.com/questions/45320036/i-keep-getting)に記載されているように、 'class album(models.Model):'を 'class Album(models.Model):'に変更するだけです。 -the-error-in-django-unboundlocalerror-at-myapp#answer-45320209)を参照してください。しかしそれだけでは問題は解決しません。 –

答えて

0

コピーは、この完全に、あなたが `album`変数を使用している

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という名前は、複数の変数に、モデルとして1回、インスタンスとして他の時間に使用されています。モデル名は理想的にはキャメルケースにする必要があります。モデル名を修正した後、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あなたは完全なstacktraceを投稿する必要があります。また、コードを変更して変更を加えた場合は、質問を編集して更新されたコードを追加してください。 –

関連する問題