LINUX.ORG.RU

Подружить django и javascript

 ,


0

2

Привет всем. Излазил уже весь интернет в поисках ответа на вопрос можно ли сделать что-то подобное и как:

 <script type="text/javascript">
{% for object in object_list %}
  var my_object = new Object({{ object.param }});
{% endfor %}
</script>

Может есть библиотеки какие для эмуляции таких штук? В основном, попадаются примеры, связанные с ajax, но там все не то, я пробовал.

Всем спасибо.

★★★★★

Последнее исправление: LongLiveUbuntu (всего исправлений: 1)

можно ли сделать что-то подобное

Можно, разрешаю.

и как

Зависит от того, чего конкретно ты хочешь добиться.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

Во:

from django.utils.safestring import mark_safe
from django.template import Library

import json


register = Library()


@register.filter(is_safe=True)
def js(obj):
	return mark_safe(json.dumps(obj))
eternal_sorrow ★★★★★
()

связанные с ajax,

И правильно. Либо так, либо через вебсокет соединиться и слать что угодно.

Любые костыли, которые ты изобретёшь для написания JS через шаблоны джанги — потенциальный XSS.

На крайний случай можно json, конечно.

x3al ★★★★★
()

О господи, как ты до такого докатился)) такие штуки делают через апи, Django Rest Framework учи, чудо

menangen ★★★★★
()
Ответ на: комментарий от menangen

Можно ли в JS просто тупо делать get запрос к https чтобы отправить данные на сервер? Это ведь секурно?

Я так делал - вроде просто и работает, может это дилетантизм (скорее так)

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Можно в контролируемых случаях, но идеологически гет для чтения и кеширования, и тебе с этим реверс-прокси поднасрать может или сам браузер, если не укажешь хидеры правильные в ответе. Ну и не совсем всё можно в кверипарамсы засунуть, колхоз же. Вот нормальный жсон пост, юзай наздоровье:

fetch('/api/method', {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(my_data),
})
  .then(res => res.json())
  .then(console.log) // result object
  .catch(console.error) // net/srv error

На сервере разница будет только в имени метода, и данные будешь брать не из .querystring, а из .body (джангу не знаю, термины общие).

anonymous
()
Ответ на: комментарий от I-Love-Microsoft

А вообще секурно, если не считать, что все геты обычно по дефолту в логи пишутся. Несекурно только хостнейм может лететь (sni), а /path часть уже внутри tls.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.