Ответ JSON не является истинной строкой при передаче в шаблон HTML? - PullRequest
0 голосов
/ 20 декабря 2010

Меня смущает следующее поведение:

Используя Freebase-Python, я отправляю запрос в API Freebase, который является запросом ответа JSON.Я получаю ответ, например:

  "status": "200 OK", 
  "code": "\/api\/status\/ok", 
  "result": {
    "\/common\/topic\/weblink": [
      {
        "url": "http:\/\/www.boardgamegeek.com\/boardgame\/13\/Settlers of Catan", 
        "description": "BoardGameGeek"
      }
    ], 
    "id": "\/en\/settlers_of_catan"
  }

Внутри того же класса RequestHandler, который я использовал, выдаю запрос, я могу сделать что-то вроде

print result.id 
>>> /en/settlers_of_catan
print result["/common/topic/weblink"][0].url
>>> http://www.boardgamegeek.com/boardgame/13/Settlers of Catan

Однако, когда я передаюРезультат объекта в шаблоне HTML, странное поведение начинается.

Я могу сделать,

{{ result.id }}

, который будет отображать "/ en / урегулирования_of_catan" в браузере.Но если я попытаюсь,

{{result ["/ common / topic / weblink"] [0] .url}}

Я получу ошибку:

  raise TemplateSyntaxError, "Could not parse the remainder: %s" % token[upto:]
TemplateSyntaxError: Could not parse the remainder: ["/common/topic/weblink"][0].url

Я также могу просто отобразить результат:

{{ result }}

Что приводит к браузеру:

{u'/common/topic/weblink': [{u'url': u'http://www.boardgamegeek.com/boardgame/13/Settlers of Catan', u'description': u'BoardGameGeek'}], u'id': u'/en/settlers_of_catan'}

Мой вопрос: почему я не могу получить доступ к результату в HTML-шаблоне?так же, как я могу из RequestHandler?

1 Ответ

2 голосов
/ 20 декабря 2010

На языке шаблонов django словарь-, поиск по индексу списка и атрибутам производится с использованием точки ('.').

По этой причине это должно быть что-то вроде {{ result.mylink.0.url }}, но больше всего это не будет работать с использованием косых черт в ключе!

...