1
我嘗試將多個值發送到渲染字典方法,但我可以只在模板中達到第一個值。Django:將多個值傳遞給渲染方法的字典
我views.py代碼:
from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect
from django.views import generic
from books.models import Book
from places.models import Symbol
class IntroView(generic.DetailView):
model = Book
template_name = 'books/intro.html'
def intro(request, book_id):
book = get_object_or_404(Book, pk=book_id)
symbol_list = Symbol.objects.all().order_by('name')
return render(request, 'books/intro.html', {'book': book, 'symbol_list': symbol_list})
和我intro.html模板:
{% extends "base.html" %}
{% block content %}
<h2>{{ book.name }}</h2>
<h3>{{ book.catch_line }}</h3>
<em>{{ book.publication_year }}</em>
<hr />
<h4>Symbols</h4>
{% if symbol_list %}
<ul>
{% for symbol in symbol_list %}
<li><img src="{{ symbol.icon.url }}"/>{{ symbol.name }}</li>
{% endfor %}
</ul>
{% else %}
<p>No symbols yet...</p>
{% endif %}
{% endblock %}
在模板symbol_list
永遠是空的,但該模型具有一定的價值。
[編輯]我的urls.py文件:
from django.conf.urls import patterns, url
from books import views
urlpatterns = patterns('',
url(r'^(?P<pk>\d+)/$', views.IntroView.as_view(), name='intro'),
)
你通過它在精細 - 所以我不認爲這是在爲'render'傳遞多個值做(你可以檢查的你可以在''symbol_list''之後傳入'book')。嘗試把'import pdb;調用'render'之前調用pdb.set_trace(),並查看'symbol_list'中的內容(請參閱http://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/ if )之前沒有使用過'pdb')。 –
你介意在'return render(...)'之前'print symbol_list'並在控制檯中看到它嗎?順便說一下,你有一個基於類的視圖和功能視圖。你在URLConf中使用哪一個? –
我剛剛添加了我的urls.py文件。我想我使用的是類而不是函數......很抱歉,這是我第一次使用django和python。 –