, 템플릿 details.html
우리는 반환 또는 views.py
에 DetailsView
클래스의 모든 context_object_name
을 정의한 적이 있지만 album
이 views.py
에 의해 전달 된 것을 알고 않는 방법. 여기에 다양한 것들이 어떻게 연결되는지 설명하십시오.Django 일반보기 : DetailView는 자동으로 템플릿에 변수를 제공합니까 ?? 다음 코드에서
details.html
{% extends 'music/base.html' %}
{% block title %}AlbumDetails{% endblock %}
{% block body %}
<img src="{{ album.album_logo }}" style="width: 250px;">
<h1>{{ album.album_title }}</h1>
<h3>{{ album.artist }}</h3>
{% for song in album.song_set.all %}
{{ song.song_title }}
{% if song.is_favourite %}
<img src="http://i.imgur.com/b9b13Rd.png" />
{% endif %}
<br>
{% endfor %}
{% endblock %}
views.py
from django.views import generic
from .models import Album
class IndexView(generic.ListView):
template_name = 'music/index.html'
context_object_name = 'album_list'
def get_queryset(self):
return Album.objects.all()
class DetailsView(generic.DetailView):
model = Album
template_name = 'music/details.html'
urls.py
from django.conf.urls import url
from . import views
app_name = 'music'
urlpatterns = [
# /music/
url(r'^$', views.IndexView.as_view(), name='index'),
# /music/album_id/
url(r'^(?P<pk>[0-9]+)/$', views.DetailsView.as_view(), name='details'),
]
미리 감사드립니다! 당신이 get_context_name()
의 구현을 선택하면
즉,'details.html'에서'album' 대신 다른 변수 이름을 사용했다면 작동하지 않고 context_object_name을 사용하여 명시 적으로 변수를 정의해야합니다. – lordzuko
또한'get_context_name()'이 언제 호출되는지 알려주실 수 있습니까? – lordzuko
@ lordzuko, 첫 번째 의견에 yes :) 변수의 이름은 모델 이름에 의해 결정됩니다. 명시 적으로 정의 할 수 있습니다. 'get_context_name()'은 뷰가 GET 요청을받을 때마다 호출되는'get()'메소드에서 호출된다. –