Словарь Джанго не прошел? - PullRequest
0 голосов
/ 11 марта 2019

Попытка передать словарь python моему шаблону django. Но, похоже, это не передается при рендеринге. Я прочитал документацию и несколько сайтов, но не могу найти решение. Это должно быть просто ...

#views.py
def home(request):
    context = {}
    links = getLinks()
    for link in links:

        splited = getRate(link).split()
        # print(splited)
        key = splited[1]
        context[key] = float(splited[0])
    print(context)
    return render(request, 'home.html', context)

home.html:

{% for key, value in context.items %}
<a href="{{key}}">{{value}}</a>
{% endfor %}

Я печатаю словарь в своем терминале, поэтому он определенно существует и содержит все, что мне нужно. Но не могу сослаться на это в моем шаблоне.

1 Ответ

2 голосов
/ 11 марта 2019

Причина в том, что шаблон не знает об имени context, поэтому в {% for key, value in context.items %}, context.items не ссылается ни на что.

Это означает, что вам нужно передать правильный словарьшаблон:

# views.py
def home(request):
    data = {}
    links = getLinks()
    for link in links:
        splited = getRate(link).split()
        key = splited[1]
        data[key] = float(splited[0])
    return render(request, 'home.html', {'context': data})  
    # Now, 'context' will actually mean something to the template.

Теперь, когда вы знаете, в чем ошибка, я предлагаю не называть вашу переменную шаблона context.

...