PHP in Python übersetzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

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>
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

Du hast das von mir beschriebene Problem, testest du mal mein Codebeispiel?

BTW: Ich würde relative Pfade nutzen statt https://pythonv1.herokuap...
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@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>
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

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.
Benutzeravatar
__blackjack__
User
Beiträge: 13068
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
__blackjack__
User
Beiträge: 13068
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Sirius3: <date> ist jetzt aber eine selbsterfundenes Tag, oder? HTML5 kennt für (maschinenlesbare) Zeit- und Datumsangaben das <time>-Element. Also zum Beispiel ``<time datetime="2018-08-06T15:32:12Z"></time>``
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Ich habe es Jetzt mit diesem Code hier geschaft die Zeitzone richtig festzulegen jetzt muss ich es nur noch hinbekommen das, das ganze bei jedem Request Aktualisiert wird.

Code: Alles auswählen

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

#d = datetime.datetime.now()
my_date = datetime.datetime.now(pytz.timezone('Europe/Berlin'))
fmt = "%d-%m-%Y %H:%M:%S"
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=my_date.strftime(fmt))


if __name__ == '__main__': app.run(debug=True)
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dann mach das doch nicht auf Modul-Ebene, sondern in /uhr :K
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

__deets__ hat geschrieben: Mittwoch 8. August 2018, 13:58 Dann mach das doch nicht auf Modul-Ebene, sondern in /uhr :K
Soll heißen: Schreib die Zeilen zum Datum in die Funktion test() bwz. nach der Zeile: def test():
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Ich hab das ganze jetzt so geändert aber es geht immer noch nicht.

Code: Alles auswählen

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

#d = datetime.datetime.now()
my_date = datetime.datetime.now(pytz.timezone('Europe/Berlin'))
fmt = "%d-%m-%Y %H:%M:%S"
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():
    x = my_date.strftime(fmt)
    return render_template('test.html', time = x)


if __name__ == '__main__': app.run(debug=True)
Benutzeravatar
__blackjack__
User
Beiträge: 13068
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Hypec: Du ermittelst die Zeit *einmal* in der 6. Zeile und formatierst dann nur noch bei jedem Abruf dieses einmal ermittelte `datetime`-Objekt bei jedem Aufruf. Du musst das jedes mal neu ermitteln. Das gehört sowieso nicht auf Modulebene.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Vielen Dank für eure Hilfe jetzt geht die Uhr.
Antworten