Seite 1 von 2

PHP in Python übersetzen

Verfasst: Mittwoch 1. August 2018, 16:17
von Hypec
Hallo,
ich habe ein kleines php script welches ich für einen webserver in Python brauche. Auf dem Server läuft Python 3.6 und Flask. Kann mir hier vlt. diesen kleinen Code übersetzen.

Code: Alles auswählen

<?php
$timestamp = date("d-m-Y - H:i:s");
$datastring = $_POST["params"];

echo $timestamp;
echo $datastring;
?>
Danke schon mal im Voraus,
Hypec

Re: PHP in Python übersetzen

Verfasst: Mittwoch 1. August 2018, 16:42
von __blackjack__
@Hypec: Woran hängt es denn konkret? Das einzige was die Flask-Dokumentation nicht direkt beantworten dürfte, müsste die Dokumentation des `datetime`-Moduls aus der Python-Standardbibliothek ergänzen können.

Re: PHP in Python übersetzen

Verfasst: Mittwoch 1. August 2018, 17:07
von Hypec
Das Script soll Daten, die von einem Arduino über ein Simmodul, in regelmäßigen intervallen, gesendet werden empfangen und dann in eine Liste schreiben welche auf einer kleinen Website ausgegeben werden soll.

Re: PHP in Python übersetzen

Verfasst: Mittwoch 1. August 2018, 17:11
von __blackjack__
Das beschreibt immer noch kein konkretes Problem und hat auch nicht so wirklich viel mit dem PHP-Quelltext im ersten Beitrag zu tun. Also noch einmal: Was ist denn, nach dem durcharbeiten eines Python-Tutorials, und dem Tutorial in der Flask-Dokumentation, nach dem Hinweis auf das `datetime`-Modul, der Python-Code an dem Du nicht mehr weiter kommst?

Re: PHP in Python übersetzen

Verfasst: Donnerstag 2. August 2018, 02:06
von pixewakb
Hypec hat geschrieben: Mittwoch 1. August 2018, 16:17

Code: Alles auswählen

<?php
$timestamp = date("d-m-Y - H:i:s");
$datastring = $_POST["params"];

echo $timestamp;
echo $datastring;
?>
Zu deinem Datumsproblem schau mal hier:

Code: Alles auswählen

>>> import datetime
>>> d.strftime("%d-%m-%Y %H:%M:%S")
'02-08-2018 03:01:42''
Zum Flask-Problem - ich habe noch nicht mit Flask gearbeitet (!) - könnte diese Seite helfen:
https://stackoverflow.com/questions/104 ... sk-request

Ich erinnere mich noch gut, wie ich erstmals mit Datumswerten gearbeitet habe und mir dann mit strip, replace usw. aus einem datetime.datetime-Objekt dann einen Datumsstring gebastelt habe :D Ist etwas her. Wahrscheinlich musst du aber dennoch mal ein Tutorial durcharbeiten, die Datumsspielerei sollte eigentlich keine Herausforderung darstellen. Wenn Du es mit noch mehr Python 3-Quelltext zu tuen bekommst und den warten musst: Tutorial durcharbeiten.

Re: PHP in Python übersetzen

Verfasst: Donnerstag 2. August 2018, 16:48
von Hypec
Danke ersmal für den code für die Uhrzeit. Mein Hauptproblem die 3. Zeile ist da ich nichts gefunden habe wie ich diese $_Post Variabel in Python schreibe.

Code: Alles auswählen

$datastring = $_POST["params"];

Re: PHP in Python übersetzen

Verfasst: Donnerstag 2. August 2018, 16:52
von __deets__
Hast du mal in die Dokumentation von Flask geschaut, wie da mit POST-Variablen umgegangen wird? Diskutiert zB hier: https://stackoverflow.com/questions/104 ... sk-request

Re: PHP in Python übersetzen

Verfasst: Donnerstag 2. August 2018, 18:00
von Hypec
Ich hab den Datumscode hier in mein Projekt eingefügt und bekomme jetzt diese Fehlermeldung hier:
>>> import datetime
>>> d.strftime("%d-%m-%Y %H:%M:%S")
'02-08-2018 03:01:42''
Code:

Code: Alles auswählen

from flask import Flask, render_template, url_for
import datetime

app = Flask(__name__)
...
@app.route('/uhr')
def uhr():
    return d.strftime ("%d-%m-%Y %H:%M:%S")
    
if __name__ == '__main__': app.run(debug=True)
Fehler:

Code: Alles auswählen

2018-08-02T16:59:24.473092+00:00 app[web.1]:   File "/app/app.py", line 13, in uhr

2018-08-02T16:59:24.473094+00:00 app[web.1]:     return d.strftime ("%d-%m-%Y %H:%M:%S")

2018-08-02T16:59:24.473102+00:00 app[web.1]: NameError: name 'd' is not defined

Re: PHP in Python übersetzen

Verfasst: Donnerstag 2. August 2018, 18:53
von pixewakb
SORRY! Vom Handy:

Füge vorher noch

d = datetime.datetime.now()

ein.

Re: PHP in Python übersetzen

Verfasst: Donnerstag 2. August 2018, 20:16
von Hypec
Danke dann probier ich das so aus wenn ich wieder zu Hause bin.

Re: PHP in Python übersetzen

Verfasst: Donnerstag 2. August 2018, 20:43
von pixewakb
Das sollte jetzt funktionieren - ich kontrolliere es gerade vom Rechner:

Code: Alles auswählen

>>> import datetime
>>> d = datetime.datetime.now()
>>> d.strftime ("%d-%m-%Y %H:%M:%S")
'02-08-2018 21:37:28'

Re: PHP in Python übersetzen

Verfasst: Mittwoch 8. August 2018, 11:46
von Hypec
Ich habe den code jetzt so in meinem Programm mit drin das Problem jetzt ist nur 1. der Server ist in einer anderen Zeitzone 2. Es wird mir immer nur die Uhrzeit angezeigt zu der, der Server gestarted wurde. Kann mir da bitte jemand helfen das zu beheben.
Danke schon mal

Re: PHP in Python übersetzen

Verfasst: Mittwoch 8. August 2018, 11:59
von __deets__
Da du keinen Code zeigst.... schwierig. Ich rate mal, dass du dir nur *EINMAL* die Uhrzeit holst, auf Modulebene. Das wird nicht magisch immer aktualisiert. Du musst die Abfrage bei jedem einlaufenden Request wiederholen.

Re: PHP in Python übersetzen

Verfasst: Mittwoch 8. August 2018, 12:03
von Sirius3
Sollen wir jetzt raten, was Du gemachst hast?? Was ist Dein konkretes Problem? Was möchtest Du erreichen?

Re: PHP in Python übersetzen

Verfasst: Mittwoch 8. August 2018, 12:18
von pixewakb
Ich habe so ein ähnliches Problem: Vor einigen Tagen mal eine bottle.py-App geschrieben und das Datum ausgegeben und das angezeigte Datum mit Stunden ist zwei Stunden gegenüber der Mittel-Europäischen-Zeitzone hinterher, es reflektiert also die Zeitzone, wo der Server steht und nicht die Zeitzone des Besuchers. Ich denke, dass das sein Problem ist.

@Hypec: <s>Googlest du mal nach datetime and timezone, da müsstest du fündig werden (ich habe das für mich selbst noch nicht gelöst) und wahrscheinlich musst du pytz einsetzen.</s>

Ich bin hier fündig geworden: https://stackoverflow.com/questions/453 ... zone-aware

Testest du mal:

Code: Alles auswählen

import datetime
import pytz

my_date = datetime.datetime.now(pytz.timezone('Europe/Berlin'))

print(my_date)
Eine Überlegung meinerseits: Du hast das Problem, dass - wenn die Besucher deiner Website nicht aus deiner Zeitzone kommen - sie eine falsche Zeit angezeigt erhalten. Du müsstest hier dann vielleicht auch deren IP, ihre wahrscheinliche Herkunft ermitteln und dann deren Zeitzone zu treffen versuchen. Das ist meine bisherige Überlegung. Persönlich würde ich dazu tendieren Benutzern keine Uhrzeit anzuzeigen (!) und das Datum nur fürs loggen zu verwenden, da spielt es dann aber auch keine Rolle, ob die Uhrzeit passt.

Re: PHP in Python übersetzen

Verfasst: Mittwoch 8. August 2018, 12:21
von Hypec
Sorry vergessen hier ist mein code:
Flask:

Code: Alles auswählen

from flask import Flask, render_template, url_for
import requests
import datetime

d = datetime.datetime.now()
app = Flask(__name__)

@app.route('/',methods=['GET','POST'])
def index():
    return render_template('index.html')

@app.route('/uhr')
def uhr():
   return d.strftime ("%d-%m-%Y %H:%M:%S")

@app.route('/test.html')
def test():
    return render_template('test.html', time=d.strftime ("%d-%m-%Y %H:%M:%S"))


if __name__ == '__main__': app.run(debug=True)
Test.html:

Code: Alles auswählen

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Gewächshaus</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <style>
            
                body {
                    background-color: darkgray;
                    color: black;
                    font-family: 'Arial', sans-serif;
                }
            
        </style>
    </head>
    <body>
        <h1 id="tittle">Gewächshaus</h1>
        <nav>
            <ul>
                <a href="https://pythonv1.herokuapp.com/">HOME</a><br>
                <a href="https://pythonv1.herokuapp.com/test.html">TEST</a><br>
            </ul>
        </nav>
        <h2>Test </h2>
        <p>
            only a Test {{time}}
        </p><br>
    </body>
</html>

Re: PHP in Python übersetzen

Verfasst: Mittwoch 8. August 2018, 12:29
von pixewakb
Du hast das von mir beschriebene Problem, testest du mal mein Codebeispiel?

BTW: Ich würde relative Pfade nutzen statt https://pythonv1.herokuap...

Re: PHP in Python übersetzen

Verfasst: Mittwoch 8. August 2018, 12:43
von Sirius3
@Hypec: und jetzt schau mal, wann die Uhrzeit ermittelt wird.

Man kann die Uhrzeit in UTC übertragen und dann per Javascript umrechnen lassen:

Code: Alles auswählen

<div> Jetzt: <date>2018-08-06T15:32:12</date> </div>
<script>
dates = document.getElementsByTagName('date')
for(var i=0; i<dates.length; i++)
    dates[i].innerHTML = new Date(dates[i].innerHTML).toLocaleString()
</script>

Re: PHP in Python übersetzen

Verfasst: Mittwoch 8. August 2018, 12:54
von Hypec
Eine Überlegung meinerseits: Du hast das Problem, dass - wenn die Besucher deiner Website nicht aus deiner Zeitzone kommen - sie eine falsche Zeit angezeigt erhalten. Du müsstest hier dann vielleicht auch deren IP, ihre wahrscheinliche Herkunft ermitteln und dann deren Zeitzone zu treffen versuchen. Das ist meine bisherige Überlegung. Persönlich würde ich dazu tendieren Benutzern keine Uhrzeit anzuzeigen (!) und das Datum nur fürs loggen zu verwenden, da spielt es dann aber auch keine Rolle, ob die Uhrzeit passt.
Also da sich der Besucherkreis der Webseite sich eigentlich nur auf mich bezieht kann ich die Zeitzone ziemlich genau sagen und die brauche ich auch da ich regelmässig Messwerte an den Server senden, darauf sammeln und dann anzeigen will, da ist ein Zeitstempel für die Werte schon sinnvoll. Das problem ist das der Server des Hosters in einer anderen Zeitzone steht und ich deshalb immer den Zeitstempel mit 2 Stunden Zeitverschiebung hätte.

Re: PHP in Python übersetzen

Verfasst: Mittwoch 8. August 2018, 12:59
von __blackjack__
@Hypec: Bei Zeitstempeln in einer Datenbank würde ich sowieso überlegen UTC zu verwenden, und dann bei der Anzeige in die entsprechende Zeitzone umzuwandeln. Dann ist egal wo Server und Client sitzen und ob Sommerzeit gilt oder nicht.