фляга прохождения json и render_template - PullRequest
0 голосов
/ 10 ноября 2018

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

Я видел пару ответов по этому поводу, но по какой-то причине ни один из них не помог мне

я знаю, что связь между Javascript и Flask прочная, поскольку я могу console.log ("string") в функции Onload в JS, но, похоже, он не распознает ничего, что я передаю с шаблоном рендеринга

вещей, которые я пробовал до сих пор

сохранение объекта json как переменной и передача его с шаблоном рендеринга.

    x = {"Success": True , "Msg":" lets try to get jinja to work - email {{ current_user.email }} " , "displayname":current_user.name}
    t = "test"
    return render_template("index.html", x=x ,t=t)

на JS

document.addEventListener('DOMContentLoaded' , function () {
console.log("loaded");


const onStay = new XMLHttpRequest();
onStay.open('post' , "stay" , true);
onStay.send(null);

onStay.onload = ()=>{

console.log("i got response from flask ... onstay.onload , cheers !");
//console.log(x);
var  rt = t;
console.log(rt);
var resStay = JSON.parse(x.responseText);
var tt = JSON.parse('{{ x | tojson | safe}}');

поэтому я также проверяю, могу ли я передать код jinja2 или код flask_login, сохранить его в некоторой переменной и ответить на него JS

вторая попытка была попытка jsonify метода и разобрать его

на питоне:

X = jsonify({"Success": True , "Msg":" lets try to get jinja to work - 
email {{ current_user.email }} " , "displayname":current_user.name})
return render_template("index.html", X=X)

на конце JS:

 onStay.onload = ()=>{
 var res = JSON.parse(reqSignup.responseText);
 console.log("res  === " , "\n" , res );

вывод, который я получаю

JavaScript.js:11 i got response from flask ... onstay.onload , cheers !
JavaScript.js:13 Uncaught ReferenceError: t is not defined
    at XMLHttpRequest.onStay.onload (JavaScript.js:13)
onStay.onload @ JavaScript.js:13
load (async)


JavaScript.js:191 qwe@qwe.qwe 
 qwe
JavaScript.js:313 DATA   =  FormData {}

1 Ответ

0 голосов
/ 10 ноября 2018

Проблема в том, что вы пытаетесь получить доступ к переменным напрямую из JavaScript. Что вам нужно сделать, это использовать эти переменные в шаблоне колбы с помощью Jinja и в нем вызвать вызов вашего JavaScript.

Классическим примером является установка кнопки с onclick = YourFunction (x). При вызове функции она передает значение, которое она имеет в переменной.

Вам следует использовать шаблонный движок Flask по умолчанию, который Jinja , но если вы предпочитаете шаблонизатор, который я разработал для облегчения такого рода вещей, если Sucuri .

Надеюсь, это поможет.

...