2013-03-20 61 views
-1

這是一個非常簡單的問題,但我無法弄清楚。django - render_to_response - 一些東西呈現

我有查看哪些提取行,然後調用render_to_response。不過,我想添加一些其他的東西來顯示在不是從數據庫來的模板中。我只是無法解決如何做到這一點,而且在涵蓋這種情況的文檔中找不到任何內容。

如果我只是通過數據庫獲取的結果 - 表單獲取呈現等等,一切都如其所應當的那樣工作。只要我介紹其他一些東西,我就會得到一個500(如下例所示)或者它只是完全被忽略。

(我在下面所示的例子努力的東西,是一種Django的教程「民意調查」程序的突變所以道歉,如果一些的命名似乎有點奇怪)

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> 

INNER模板

{% 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%} 

編輯: 正如指出的在評論我有一個錯字有這麼只是爲了未來的搜索下列兩種方法的緣故作品:

OPTION 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 %} 
+1

語法錯誤:'d = { '標題'= '測試題'}'裏面你'detail'功能 – 2013-03-20 22:47:49

+0

謝謝你指出 – glaucon 2013-03-20 23:16:36

+0

如果您有解決方案,請關閉此問題(將您的解決方案添加爲答案並將其標記爲選定的答案) – 2013-03-21 08:11:52

回答

1

作爲在評論中指出,我在那裏有一個錯字,所以只是爲了將來的搜索者採用以下兩種方法中的任何一種:

OPTION 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 %}