python - titres - x2srt




Importer des fichiers javascript avec jinja à partir du dossier statique (2)

J'ai besoin d'avoir accès au template jinja dans les fichiers javascript (en raison des tags i18n). Donc, la façon dont j'ai trouvé est juste de charger le fichier js avec include, de la méthode jinja. {% include "file.js" %}

Cependant, cette méthode recherchera uniquement les fichiers dans le dossier des modèles. Mais les fichiers js doivent être dans le dossier statique. Ma question est, comment puis-je changer la façon dont jinja cherche des fichiers? Au lieu de rechercher dans le dossier des modèles, dans ce cas, recherchez dans le dossier statique.

{% block javascript %}
    <script type="text/javascript">
        {% include "myscript.js" %}
    </script>
{% endblock %}

Étant donné un exemple de structure de répertoire qui ressemble à ceci

app/static/css/bootstrap.min.css
app/static/js/bootstrap.min.js
app/templates/test_page.html
app/views
run_server

Vous pouvez définir le flask static_url_path lorsque vous créez l'objet app

app = Flask(__name__, static_url_path='/static')

puis dans test_page.html vous pouvez avoir quelque chose qui ressemble à ceci

<link href="{{ url_for('static', filename='css/bootstrap.min.css') }}" rel="stylesheet">

 I'm an html body

<script src="{{ url_for('static', filename='js/bootstrap.min.js') }}"></script>

Si vous devez traiter un fichier comme un modèle, il n'est pas statique. Mettez-le dans le dossier des modèles et le rendre. Si le fichier n'est pas dynamique, il est statique. Mettez-le dans le dossier statique et liez-le. Il n'est pas nécessaire qu'un type de fichier donné soit un modèle ou un fichier statique. Choisissez celui qui est nécessaire.

D'un autre côté, il est probablement préférable de garder JS statique et de lui passer des arguments plutôt que de générer un code différent en fonction d'une entrée différente.





template-engine