Не удается получить значения словаря в шаблонах Django - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь получить доступ к значению метода класса, который возвращает словарь.Моя функция выглядит следующим образом:

 class GetData:
def __init__(self, api_key, ip, interface):
    self.api_key = api_key
    self.asa_ip = ip
    self.interface = interface
    self.auth_headers = {'X-Auth-Token': api_key, 'Content-Type': 'application/json'}

def data(self):
    req = requests.get('https://{}:/{}/entries'.format(self.ip, self.interface),
                       headers=self.auth_headers, verify=False)
    json_response = json.loads(req.content)
    data = {}
    for items in json_response['items']:
    ...

    return data  #it return dictionary     

В моем view.py мой код выглядит так:

   def class_data(request):
       interface_name = request.session.get('interface')
       ip = request.session.get('ip')
       api_key = request.session.get('api_key')
       peer = str(request.POST.get('Peer'))
       class_data = DataForm(interface_name, api_key, ip)
       return render(request, 'user/data.html', {'peer' : str(peer), 'class_data': class_data })

В моем data.html я пытаюсь получить доступ к данным в классе GetData:

       <h5>Data</h5>
            <p> {{ class_data.data.peer.pfs_group }}</p>

Я не получаю никакой ошибки и вижу пустую страницу в браузере.Я уже пытался вызвать класс следующим образом:

    {{ class_data.data[peer]['pfs_group'] }}

Но когда я это делаю, я получаю сообщение об ошибке:

     django.template.exceptions.TemplateSyntaxError: 
     Could not parse the remainder: '[peer]['pfs_group']' from 'vpn_data.data[peer]['pfs_group']' 

Что я делаю неправильно ??

1 Ответ

0 голосов
/ 24 января 2019

Проблема в том, что peer является переменной, но когда вы используете ее в качестве ключа, Django просто видит ее как буквенную строку.

Вы должны выполнить поиск в представлении и передать полученное значение в шаблон:

   peer = str(request.POST.get('Peer'))
   class_data = DataForm(interface_name, api_key, ip)
   peer_data = class_data[peer']
   return render(request, 'user/data.html', {'peer_data': peer_data })

...

{{ peer_data.pfs_group }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...