Это очень простая проблема, но я просто не могу понять это.django - render_to_response - некоторые вещи отображаются
У меня есть представление, которое выводит строку, а затем вызывает render_to_response. Однако я хочу добавить некоторые другие материалы для отображения в шаблон, который не пришел из базы данных. Я просто не могу понять, как это сделать, и я не могу найти что-либо в документации, которая охватывает эту ситуацию.
Все работает так, как должно быть, если я просто передаю результаты извлечения базы данных - форма получает визуализацию и т. Д. Как только я представляю некоторые другие вещи, я либо получаю 500 (как в примере ниже), либо просто полностью игнорируется.
(Вещами я работаю в примерах, показанных ниже, является своим родом мутации приложения в Джанго Tutorial опроса так извинения, если некоторые из названий кажется немного странным)
VIEW
Как и объект BookMark, я добавляю некоторые сводные данные, в моем примере строку «test title».
def detail(request, bookmark_id):
try:
b = BookMark.objects.get(pk=bookmark_id)
d = {'title' = 'test title'}
except Poll.DoesNotExist:
raise Http404
return render_to_response( 'bookmarks/bookmark_detail.html',
{'bookmark': b, 'title': d},
context_instance=RequestContext(request))
БАЗА ШАБЛОН
<!DOCTYPE html>
<html lang="en">
<head>
<title>{% block title %}Default Title from base.html{% endblock %}</title>
</head>
<body>
<div id="topstuff">
<h1>This is top stuff</h1>
</div>
<div id="content">
{% block content %}{% endblock %}
</div>
<div id="bottomstuff">
<h1>This is bottom stuff</h1>
</div>
</body>
</html>
ВНУТРЕННИЙ ШАБЛОН
{% extends "base.html" %}
{{ bookmark }}
{% block title %}{{ title.title }}{% endblock title %}
{% block content %}
<h1>{{ poll.question }}</h1>
{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
<form action="/polls/{{ poll.id }}/vote/" method="post">
{% csrf_token %}
<table>
<tr>
<td>URL:</td>
<td><input type="text" name="url" id="url" value="{{ bookmark.url }}" /></td>
</tr>
<tr>
<td>TITLE:</td>
<td><input type="text" name="title" id="title" value="{{ bookmark.title }}" /></td>
</tr>
<tr>
<td>NOTES:</td>
<td><input type="text" name="notes" id="notes" value="{{ bookmark.notes }}" /></td>
</tr>
</table>
<input type="submit" value="Submit" />
</form>
{% endblock content%}
EDIT: Как указывалось в комментариях у меня была опечатка там так просто ради будущих искателей либо из следующих двух подходов работы:
ВАРИАНТ 1 значение Вставить непосредственно в словарь передается render_to_response следующим
return render_to_response( 'bookmarks/bookmark_detail.html',
{'bookmark': b, 'title':'test title1'},
context_instance=RequestContext(request))
Обратитесь к этому значению в шаблоне следующим образом:
{% block title %}{{ title }}{% endblock title %}
OPTION2 Создание словаря контейнер для хранения других ценностей, а затем вставлять, что в словарь передается render_to_response следующим
d = {'title':'test title 2'}
return render_to_response( 'bookmarks/bookmark_detail.html',
{'bookmark': b, 'title':d},
context_instance=RequestContext(request))
Обратитесь к этому значению в шаблоне следующим образом:
{% block title %}{{ title.title }}{% endblock title %}
Синтаксическая ошибка: 'd = { 'название' = 'тест название'}' 'внутри вашей detail' функция –
Спасибо за указав, что вне – glaucon
, пожалуйста, закройте вопрос, если у вас есть решение (добавьте свое решение в качестве ответа и отметьте его как выбранный ответ) –