web-dev-qa-db-fra.com

vscode html autoformat on Django template

J'adore VSCode lors de l'enregistrement du formatage automatique jusqu'à ce qu'il s'embrouille avec mon code de modèle.

Il formate à tort ma Django syntaxe du modèle en un code de ligne (parfois très longue ligne). Donc, au lieu d'avoir ce code

{% for row in 'ABCDEFGH' %}
<tr>
  {% for col in '123456789012345' %}
    <td>
      {% with forloop.counter|stringformat:"s" as counter %}
        {% with row|add:counter as seat_num %}
          {% if seat_num not in oc_seats %}
            <input type="checkbox" value="{{ row }}{{ forloop.counter }}" name="seats">
          {% endif %}
          <br> {{ seat_num }} 
        {% endwith %}
      {% endwith %}
     </td>    
   {% endfor %}
</tr>
{% endfor %}

Je finis par avoir ce code

{% for row in 'ABCDEFGH' %}
<tr>
  {% for col in '123456789012345' %}
  <td style="text-align: center; border: 1px solid #aaa;">
    {% with forloop.counter|stringformat:"s" as counter %} {% with row|add:counter as seat_num %} {% if seat_num not in oc_seats %}
    <input type="checkbox" value="{{ row }}{{ forloop.counter }}" name="seats"> {% endif %} {{ seat_num }} {% endwith %} {% endwith %}
  </td>
  {% endfor %}
</tr>
{% endfor %}

J'ai essayé de désactiver le format lors de l'enregistrement en modifiant les paramètres utilisateur en {"editor.formatOnSave": false} mais je n'ai toujours pas eu de chance.

Y a-t-il une configuration que je peux utiliser pour le faire fonctionner mieux?

PS: j'utilise VSCode version 1.9 sur Sierra MacOSx

13
Fahri Firdausillah

vous pouvez désactiver le formateur html par défaut, allez dans Fichier> Préférences> Paramètres utilisateur ou espace de travail, dans les paramètres HTML, vous trouverez:

// Enable/disable default HTML formatter (requires restart)
  "html.format.enable": true,

Je pense que VSCode utilise js-beautify comme formateur par défaut, vous pouvez utiliser extension embellir pour remplacer les paramètres avec .jsbeautifyrc dans le répertoire du projet

4
Majid Max

Changer le mode de langue du fichier en "Django/HTML" empêchera également VSCode de le mettre en forme automatiquement.

4
Alexa

A eu le même problème, a trouvé un message où la personne a désactivé l'extension JS-CSS-HTML Formatter ( https://stackoverflow.com/a/42100808/4812548 ) et a résolu le problème. Testé sur le mien et il semble avoir fonctionné aussi. J'espère que cela pourra aider

3
Tony

Alexa a un bon point à sa réponse . Le mode de fichier doit être changé dans "Django/HTML" pour empêcher VS CODE de le formater.

Comment changer le mode fichier?

Une solution rapide consiste à utiliser cette extension appelée vscode-Django et à ajuster votre paramètre comme ceci, comme indiqué dans sa documentation.

"files.associations": {
    "**/templates/*.html": "Django-html",
    "**/templates/*": "Django-txt"
}

Avec ces paramètres, tout fichier situé dans le dossier du modèle sera considéré comme un fichier de modèle Django et ne sera pas affecté par le formatage automatique HTML.

PS: L'extension est toujours en mode aperçu, j'espère qu'elle s'améliorera avec le temps.

1
Espoir Murhabazi