2016-03-07 1 views
3

Je me demandais quelle était la convention pour la longueur de ligne lors de la saisie de help_text et d'autres longues lignes codées en dur dans Python/Django. J'ai lu PEP-8, où la longueur de ligne est couverte pour le code et les commentaires, mais je ne suis pas sûr de savoir comment cela s'applique aux longues chaînes de texte.Django help_text longueur ligne convention

Ceci est le champ pour le champ 'explanation_text' et l'option du champ texte d'aide.

class Question(models.Model): 
    questionnaire = models.ForeignKey(Questionnaire, on_delete=models.CASCADE) 
    title = models.CharField(max_length=150, blank=False) 
    category = models.CharField(max_length=20, blank=False) 
    created_date = models.DateTimeField(default=datetime.now, blank=True) 
    explanation_text = models.TextField(
     blank=True, 
     help_text="Explanation text goes here. Candidates will be able to see this after they have taken a questionnaire. To change this, refer to the setting on questionnaire administration. Max length is 1000 characters.", 
     max_length=1000) 

    def __str__(self): 
     return self.title 

Répondre

4

Vous pouvez stocker la chaîne help_text comme une chaîne multi-ligne avec des marques triple guillemets comme suit:

help_text = """Explanation text goes here. Candidates will be able to see 
      this after they have taken a questionnaire. To change this, 
      refer to the setting on questionnaire administration. Max 
      length is 1000 characters.""" 

Cependant, il pourrait être plus conventionnel soit:

  • stockez la chaîne multiligne dans une constante en haut de votre fichier models.py:

    HELP_TEXT = """Explanation text..... 
         .................. 
         """ 
    
    class Question(...): 
        ... 
        help_text = HELP_TEXT 
    
  • de regrouper toutes vos constantes dans un fichier constants.py. Dans models.py vous alors:

    import constants 
    
    class Question(...): 
        ... 
        help_text = constants.HELP_TEXT 
    
+1

Merci beaucoup, je ne peux pas encore vaincre car je n'ai pas une réputation assez élevée.Je pense que le premier exemple que vous avez donné est celui que je choisirai car il s'agencera mieux avec le reste du projet. –

+0

Heureux d'avoir aidé! – gtlambert

+0

Je suis venu ici pour voir 'help_text' être multiligne quand _displayed_ dans le navigateur. Vous l'avez avec la balise HTML '
'. Exemple: 'Format date: JJ/MM/AAAA.
Format de l'heure: HH: MM (24 heures) ' – amolbk

2

texte supplémentaire « aide » à afficher avec le widget de formulaire. C'est utile pour la documentation même si votre champ n'est pas utilisé sur un formulaire.

Notez que cette valeur n'est pas protégée par HTML dans les formulaires générés automatiquement. Cela vous permet d'inclure du HTML dans help_text si vous le désirez. Pour exemple:

help_text = "Veuillez utiliser le format suivant: YYYY-MM-DD."

Vous pouvez également utiliser du texte brut et django.utils.html.escape() à échapper tous les caractères spéciaux HTML. Assurez-vous d'échapper tout texte d'aide pouvant provenir d'utilisateurs non autorisés afin d'éviter une attaque par script inter-site .

https://docs.djangoproject.com/en/1.9/ref/models/fields/#help-text

Il n'y a pas de règle pour elle car il est utilisé pour fournir des informations supplémentaires à l'utilisateur/développeur (exigences de longueur de ligne sont différents par exemple sur mobile et bureau)

2

Comme maazza dit, il n'y a pas de convention.

En ce qui me concerne, j'aime utiliser la concaténation de chaînes implicite python.

class Question(models.Model): 
    explanation_text = models.TextField(
     blank=True, 
     help_text=(
      "Explanation text goes here. Candidates will be able to see " 
      "this after they have taken a questionnaire. To change this, " 
      "refer to the setting on questionnaire administration. " 
      "Max length is 1000 characters."), 
     max_length=1000) 

Ce qui fonctionne proprement lors de l'utilisation ugettext:

from django.utils.translation import ugettext_lazy as _ 

class Question(models.Model): 
    explanation_text = models.TextField(
     blank=True, 
     help_text=_(
      "Explanation text goes here. Candidates will be able to see " 
      "this after they have taken a questionnaire. To change this, " 
      "refer to the setting on questionnaire administration. " 
      "Max length is 1000 characters."), 
     max_length=1000) 

Note: Soit dit en passant, this his how django do.

+1

bonne astuce et elle correspond aux recommandations de 80 caractères PEP-8 – maazza