Ich möchte, dass UserAgent beurteilt, ob es sich um einen PC oder ein Smartphone handelt, und das Stammverzeichnis der Vorlage ohne Erlaubnis wechselt.
Bereiten Sie beispielsweise eine Vorlage wie diese vor
template/ja/pc/index.html
template/ja/sp/index.html
template/ja/fp/index.html
In Sicht möchte ich dies tun, ohne das Gerät zu kennen. Ich möchte, dass Sie den PC oder SP automatisch sehen.
return render_template('index.html', form=form)
Ich suchte nach Flask-Snippets, konnte aber keine allgemeine Lösung finden. Bitte lassen Sie mich wissen, wenn Sie eine haben.
Es gab eine Erweiterung namens Flask-Mobility, aber das ist etwas schmerzhaft, weil ich nacheinander Dekorateure anbringen muss. Wenn das der Python-Stil ist, frage ich mich, ob das der Fall ist ... Danach scheint es unmöglich zu sein, 3 oder mehr wie PC, Smartphone, Garage zu teilen. http://flask-mobility.readthedocs.org/en/latest/
Ich habe versucht, Flask Extension so etwas zu haben. Ich meine, es war vor einem Jahr, als ich es geschafft habe.
Sie können entweder die Python 2-Serie oder die 3-Serie verwenden.
https://github.com/yasunori/flask-devices
Die Installation erfolgt mit pip.
pip install Flask-Devices
Auf diese Weise können Sie einen beliebigen Gerätegruppennamen, einen kanonischen UserAgent-Ausdruck und ein entsprechendes Vorlagenverzeichnis definieren.
devices = Devices(app)
devices.add_pattern('mobile', 'iPhone|iPod|Android.*Mobile|Windows.*Phone|dream|blackberry|CUPCAKE|webOS|incognito|webmate', 'templates/sp')
devices.add_pattern('tablet', 'iPad|Android', 'templates/pc')
devices.add_pattern('hoge', 'hoge', 'templates/hoge')
devices.add_pattern('pc', '.*', 'templates/pc')
Sie müssen dies nur einmal definieren und der Rest wird erledigt. Das zu passende Gerät wird in der Reihenfolge von oben ausgewertet.
Danach können Sie den Gerätenamen in Ansicht oder Vorlage übernehmen, damit Sie ihn verwenden können, wenn Sie den Prozess ändern.
@app.route("/", methods=['GET', 'POST'])
def index():
print(request.DEVICE) # mobile, tablet, hoge, pc
if request.DEVICE == 'pc':
# pc
elif request.DEVICE == 'tablet':
# tablet
{% if request.DEVICE == 'mobile' %}<strong>Es ist jetzt mobil.<a href="">Möchten Sie die PC-Version sehen?</a></strong>{% endif %}
Ich persönlich benutze es bequem.
Als Einschränkung kann es bei Verwendung von uWSGI Emperor usw. erforderlich sein, das Vorlagenverzeichnis mit einem absoluten Pfad anzugeben.
Das ist es.