2016-03-24 10 views
1

ich ein Python-Kolben-Funktion haben, die eine HTML-Seite macht und sendet dynamische Variablen, um die HTML-Seite:Javascript berechnet Zeichenfolge von Flask als ganze Zahlen gesendet

return render_template('index.html', start_date=str(start_date), end_date=str(end_date))

In der HTML-Seite, ich bin mit Javascript Lesen Sie die start_date und end_date Variablen. Da ich jedoch die Daten in mm/dd/yyyy Format übergebe, das wie 03/28/2016 aussieht. JavaScript berechnet den Datumswert als mathematischen Ausdruck und gibt 0.0000531462585.. zurück, anstatt 03/28/2016 zurückzugeben.

Hier ist mein JavaScript-Code Datumsvariablen zu lesen, die Kolben zu index.html macht:

var startDate = {{ start_date }}

Wie kann ich sicherstellen, dass ich die Datumsvariablen als String statt der berechneten Werte erhalten?

+1

Versuchen Sie, das '/' hier zu entkommen. vielleicht würde das funktionieren. –

+0

Hey ich denke, die Variable hält den berechneten Wert von Anfang an. posten Sie bitte weiteren Umgebungscode. –

+0

@Mr_Green Ich drucke die Variable direkt aus, bevor ich sie an die HTML-Seite sende und das Datum gut gedruckt habe. Außerdem bin ich 'str()', um die Variable zu codieren, bevor ich sie an die HTML-Datei sende Flasche. Auf der JavaScript-Seite mache ich 'var startDate = {{start_date}}' ' – summerNight

Antwort

2
var startDate = {{ start_date }}; 

gemacht wird als

var startDate = 03/28/2016; 

, die in der Mathematik von 3 um 28 bis 2016 geteilt geteilt ergibt, oder ,0000531462585 ..

Sie a couple of Flask and Jinja2 filters verwenden können, um auf intelligente Weise Strings als Strings zu verarbeiten und Zahlen als Zahlen.

var startDate = {{ start_date|tojson|safe }}; 

werden entlang dieser Linien als

var startDate = '03/28/2016'; 

oder etwas machen.

+0

Super! Das funktioniert :) – summerNight

+0

Darn, kurz bevor ich als Dupe geschlossen habe und den anderen Beitrag mit deiner kanonischen Antwort gemacht habe. – davidism

+0

Ha. Es ist manchmal so schwer, alte Antworten zu finden. 'Tojson' scheint mir am meisten zu passen. – dirn

0

Es sieht so aus, als müssten Sie nur sicherstellen, dass start_date eine Zeichenfolge ist. Versuchen Sie var startDate = start_date.toString(); stattdessen.

+0

Ich habe dieses' var startDate = ({{start_date}}). ToString(); 'und es gibt immer noch ein float aus. – summerNight

+0

Können Sie posten, wie Sie 'start_date' im JavaScript-Code zuweisen? – senschen

+0

'var startDate = ({{start_date}}). ToString();' – summerNight