2017-12-22 13 views
0

views.pyファイルにエラーが発生しました。その結果、ページを読み込めません。エラーの原因レンダリングに失敗したDjangoページ - views.py urlパスのエラー

音楽/ views.py

from django.shortcuts import render 
from django.http import HttpResponse 
from .models import Album 

# Create your views here. 

#each URL is connected to a view or an Http Response 

def index(request): 
    all_albums = Album.objects.all() 
    html = ' ' 
    for album in all_albums: 
     url= '/music/' + str(album_id) + '/' 
     html +='<a href="' + url + '">'+album.album_title+'</a><br>' 
    return HttpResponse(html) 

def detail(request,album_id): 
    return HttpResponse("<h2>Details for Album id:" + str(album_id) + "</h2>") 

線が考えられる:

url= '/music/' + str(album_id) + '/' 

実際の(ページ)エラーがある:

NameError at /music/ 
name 'album_id' is not defined 
Request Method: GET 
Request URL: http://127.0.0.1:8000/music/ 
Django Version: 2.0 
Exception Type: NameError 
Exception Value:  
name 'album_id' is not defined 
Exception Location: C:\Users\User\Desktop\website\music\views.py in index, line 13 
Python Executable: C:\Python34\python.exe 
Python Version: 3.4.3 
Python Path:  
['C:\\Users\\User\\Desktop\\website', 
別のテストalbum_idで210

その

http://127.0.0.1:8000/music/1/

に「accessbile」のように見えるんは正しくページをロードします(アルバムID番号がページ上に表示されます)。

エラーは上記のコードを指していますが、修正方法はわかりません。ニューボストンチュートリアルとI以下のジャンゴ2.0の修正がある場合に要約すると、無駄

に見るためにGoogleで検索しています

http://127.0.0.1:8000/music/は動作しませんものです。

http://127.0.0.1:8000/music/1またはhttp://127.0.0.1:8000/music/3は、生成されたアルバムIDでうまく表示されます。また、あなたがそれを使用する前に、あなたはalbum_idを定義していない]

+0

urls.pyコードを投稿して、urlpatternsの設定方法を確認できますか? –

+0

更新を参照してください。ありがとう – MissComputing

答えて

0
def index(request): 
    all_albums = Album.objects.all() 
    html = ' ' 
    for album in all_albums: 
     url= '/music/' + str(album_id) + '/' 

from django.contrib import admin 
from django.urls import include, path 

from . import views #the dot means look at the current directory - look for a module called views 

urlpatterns = [ 
    #this is matching /music/ 
    path('', views.index, name='index'), 
    path("<album_id>/", views.detail, name="detail") 

をurls.py投稿

UPDATE

あなたはループfor album in all_albums:です。そのため、アルバムIDが必要な場合は、album.idを使用してください。

通常、このようなビューでは文字列を作成しません。うまくいけば、あなたのチュートリアルは後でテンプレートのレンダリングに移ります。

+0

私はレンダリングのためにこれを持っていますが、ある種の字下げエラーのために前進することはできませんが、私は何が見えません! – MissComputing

+0

コメントにコードを投稿しないでください。読みにくく、インデントを見ることは不可能です。インデントのエラーがある場合は、コードに空白が含まれていて、タブがないことを確認してください。これまでの私のコメントと同様に、実際にはそういうコードは書かず、代わりに 'render'ショートカットを使います。 – Alasdair

関連する問題