Je veux que UserAgent détermine s'il s'agit d'un PC ou d'un smartphone et change le répertoire racine du modèle sans autorisation.
Par exemple, préparez un modèle comme celui-ci
template/ja/pc/index.html
template/ja/sp/index.html
template/ja/fp/index.html
En vue, je veux faire cela sans être conscient de l'appareil. Je veux que vous voyiez le pc ou le sp automatiquement.
return render_template('index.html', form=form)
J'ai recherché des extraits de code Flask, mais je n'ai pas trouvé de solution générale. S'il vous plaît laissez-moi savoir si vous en avez un.
Il y avait une extension appelée Flask-Mobility, mais c'est un peu pénible car je dois attacher les décorateurs un par un. Si c'est le style Python, je me demande si c'est le cas ... Après cela, il semble qu'il soit impossible de diviser 3 ou plus tels que PC, smartphone, garage. http://flask-mobility.readthedocs.org/en/latest/
J'ai essayé Flask Extension pour avoir quelque chose comme ça. Je veux dire, c'était il y a un an quand je l'ai fait.
Vous pouvez utiliser la série Python 2 ou la série 3.
https://github.com/yasunori/flask-devices
L'installation se fait avec pip.
pip install Flask-Devices
De cette manière, vous pouvez définir n'importe quel nom de groupe de périphériques, expression canonique UserAgent et répertoire de modèles correspondant.
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')
Vous n'avez à définir cela qu'une seule fois et il fera le reste. L'appareil à associer est évalué dans l'ordre du haut.
Après cela, vous pouvez prendre le nom de l'appareil sur la vue ou le modèle, afin de pouvoir l'utiliser lorsque vous modifiez le processus.
@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>C'est mobile maintenant.<a href="">Voulez-vous voir la version PC?</a></strong>{% endif %}
Je l'utilise personnellement de manière pratique.
En guise de mise en garde, lors de l'utilisation de uWSGI Emperor etc., il peut être nécessaire de spécifier le répertoire du modèle avec un chemin absolu.
C'est tout.