2017-08-01 44 views
0

我需要在html django模板中創建一個帶有選擇性創建的表單:我從txt文件中讀取值,並將其存儲在字典中,當我調用render響應我通過這個字典,但是當我嘗試在模板中打印它的值時,它不會打印任何內容。 這是我的看法:在django的html模板中傳遞一個變量

def home(request): 

    i=0 
    d = {} 
    with open("static/my_file.txt") as f: 
     for line in f: 
     key=i 
     val = line.rstrip() 
     d[int(key)] = val 
     i=i+1 

    return render_to_response('home.html', var=d) 

,這是在HTML模板打印:

{% for val in var %} 
    {{ val.value }} 
{% endfor %} 

能幫我嗎?

+2

請在此處閱讀文檔。 –

+2

所有你需要知道的解決方法(包括視圖和模板)都被廣泛記錄下來。而且非常簡單易懂。 –

回答

1

試試這個,而不是上面的jinja文件。 如果您只需要var的值,並且var是字典,那麼下面的這段代碼就可以適用於您。

{% for val in var.values() %} 
    {{ val }} 
{% endfor %} 
1

你必須考慮到的錯誤,你需要通過上下文從django.shortcuts字典 導入已呈現

def home(request): 

    i=0 
    d = {} 
    with open("static/my_file.txt") as f: 
     for line in f: 
     key=i 
     val = line.rstrip() 
     d[int(key)] = val 
     i=i+1 

    return render(request,'home.html', {'var':d}) 
+0

錯誤究竟是什麼?我看到相同的代碼,只改變了OP可能省去的一個導入來節省空間。 – anonymoose

0

如果您想通過剛纔的變量或所有變量(本地變量)在view.py到您的模板只傳遞當地人()在你的情況應該是:

view.py:

def home(request): 

    i=0 
    d = {} 
    with open("static/my_file.txt") as f: 
     for line in f: 
     key=i 
     val = line.rstrip() 
     d[int(key)] = val 
     i=i+1 

    return render('home.html', locals()) 

模板:

{% for key,value in d.items %} 
    {{ value }} 
{% endfor %} 
相關問題