在我的.html文件中,我有这段代码:
<ul>
{% for file in files %}
<li><a href="{% static 'notebooks/<**Part that I want to reference dynamically**>' %}">{{ file }}</a></li>
{% endfor %}
</ul>
在我的views.py文件中:
def ipythonlist(request):
files = []
main_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'static/'))
ipython_file_path = os.path.join(main_dir, 'notebooks/')
for file in os.listdir(ipython_file_path):
if file.endswith(".html"):
files.append(file)
return render(request, 'pages/ipythonlist.html', {'files': files})
我的网址文件:
url(r'^ipython/list', views.ipythonlist, name='ipythonlist')
所以我要做的是获取静态文件夹中目录中所有.html文件(或任何类型的文件,pdf,csv等)的列表。然后我使用模板标签将视图中的数据传递给我的html。我想动态链接到相应的文件,但我不知道该怎么做。
我尝试了{%static&#39; notebooks / {{file}}&#39; %},但刚刚返回错误。
不确定如何做到这一点,并希望得到一些帮助!
因此,文件链接的一个例子是{%static&#39; notebooks / chapter9.pdf&#39; %}。第9章,可以是任何名称。
答案 0 :(得分:4)
{% for file in files %}
{% with file_with_path='notebooks/'|add:file %}
<li><a href="{% static file_with_path %}">{{ file }}</a></li>
{% endwith %}
{% endfor %}
答案 1 :(得分:1)
您可以在代码中使用变量,但无法将其插入到您尝试执行的字符串中。您可以使用notebooks/
将路径添加到files
,并在{% static %}
中使用该路径:
# View
def ipythonlist(request):
files = []
main_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'static/'))
ipython_file_path = os.path.join(main_dir, 'notebooks/')
for file in os.listdir(ipython_file_path):
if file.endswith(".html"):
files.append('notebooks/%s' % file)
return render(request, 'pages/ipythonlist.html', {'files': files})
# Template
<ul>
{% for file in files %}
<li><a href="{% static file %}">{{ file }}</a></li>
{% endfor %}
</ul>