2017-06-17 2 views
0
from django.shortcuts import render 
from django.http import HttpResponse   #http response sends back html/basic webpage 
from django.conf.urls import include 
from django.template import loader 
from .models import Album 

# Create your views here. 
'''def index(request): 
    all_objects = Album.objects.all() 
    html = '' 
    for album in all_objects: 
     url = "/music/" + str(album.id) + "/" 
     html += '<a href = "' + url + '">' + album.album_title + '</a><br>' 
    return HttpResponse(html) 
''' 
def index(request): 
    all_albums = Album.objects.all() 
    #template = loader.get_template('music/index.html') 
    context = {'all_albums': all_albums} 
    return render(request, 'music/index.html', context) 
    #return HttpResponse(template.render(context, request)) 

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

は完全に正しいテンプレートを生成します。 存在しないアルバムのテンプレートを追加するとき。 これは、2枚のアルバムを追加してデータベースと同期したものです.3番目のテンプレートページを見ると、404エラーが発生するはずです。 と私はそれは私がやってみたかったが、私はhttp://127.0.0.1:8000/music/2/で入力すると、それは誤り「/音楽/ 2 /でTemplateDoesNotExist」を与えて起動する404エラーを生成http://127.0.0.1:8000/music/3/を入力すると、このためのコードはDjangoのこのテンプレートで何が問題になっていますか?

from django.http import Http404 
from django.shortcuts import render 
from django.http import HttpResponse 
from django.template import loader 
from .models import Album 


def index(request): 
    all_albums = Album.objects.all() 
    #template = loader.get_template('music/index.html') 
    context = {'all_albums': all_albums} 
    return render(request, 'music/index.html', context) 
    #return HttpResponse(template.render(context, request)) 
    #render has an inbuilt http return type 

def detail(request, album_id): 
    try: 
     album = Album.objects.get(pk=album_id) 
    except Album.DoesNotExist: 
     raise Http404("Album does not exist") 
    return render(request, 'music/detail.html', {'album':album}) 

は - 。 なぜこれが起こっている...

+1

テンプレートとは何か、ここでの表示は混乱しているようです。詳細ビューでテンプレートを使用しないため、元のコードが機能します。 2番目のコードはdetail.htmlテンプレートを参照していますが、おそらく存在しません。 –

+0

いいえ、私はindex.htmlと一緒にdetail.htmlテンプレートを追加しました... – shery224

+0

それは{{album}} – shery224

答えて

0

問題は、あなたのテンプレートファイルdetails.htmldetail.htmlでなければならないことである、detail後もsは、あなたのviews.pyのように、それはmusic/detail.htmlとして言及されていません。

または

あなたviews.pymusic/details.htmlに変更することができます。

テンプレート名は一致する必要があります。

+0

とインデントを削除する必要もありました。おかげで – shery224

+0

@ shery224クール、それはあなたのためにうれしい、コミュニティでの旅を楽しむ、幸運:) –

関連する問題