[PYTHON] [Django] Commandes utilisées personnellement, modèles de code, TDD [Memo]

Comme le dit le titre. Ajoutez des choses que vous pensez plus rapides à écrire qu'à rechercher

Mémo (commande)

commander Contenu
python manage.py inspectdb [Table name] Créer un modèle d'une base de données existante

Mémo (modèle de programme)

url La structure du fichier

prj  -app   -views    _init_.py    sample1.py    sample2.py

Notez que c'est un code quand il ressemble (je l'ajouterai dans le commentaire pour le moment)

urls.py


from django.urls import path
# from . import views
from .views import  sample1, sample2

app_name = 'app'

urlpatterns = [
    # path('sample1', views.sample1, name='sample1'),
    # path('sample2', views.sample2, name='sample2')
    path('sample1', sample1.method_name, name='sample1'),
    path('sample2', sample2.method_name, name='sample2')
]

Form

forms.py


import re
from django import forms
from django.forms import RadioSelect
from django.core.exceptions import ValidationError


class DocumentForm(forms.Form):
    #Juste un champ de caractère
    text_Field = forms.CharField()
    #50 caractères ou moins
    #Non requis(La valeur initiale est requise)
    #Non requis(Format de la zone de texte)
    text_Area = forms.CharField(max_length=50, required=False, widget=forms.Textarea)
    #Taple de choix.(Valeur actuelle,Valeur d'affichage)
    #Faites-en un bouton radio(À l'origine tirer vers le bas)
    #Valeur initiale(Spécifiez la valeur réelle)
    radio_button= forms.fields.ChoiceField(
                        choices = (('1','value1'),('2','value2')),
                        widget=RadioSelect,
                        initial=2
                    )
    #Champ de fichier
    file_field = forms.FileField()

    #Ajoutez une classe à l'élément ici. HTML<input name="aaa" value=... />Correspond à la partie de
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # text_Ajouter à la classe Field_ajouter une classe
        self.fields["text_Field"].widget.attrs['class']='add_class'

    #Faire une validation personnalisée
    # clean_[Nom de domaine]Peut créer une validation pour des champs spécifiques avec
    #Si la validation échoue, vous devez émettre une erreur avec lever ValidationError.
    def clean_text_Field(self):
        text_Field = self.cleaned_data['text_Field']
        if re.fullmatch(r'^[a-z0-9-]+$',text_Field) == None:
            raise ValidationError("Des caractères non disponibles sont utilisés")
        return text_Field


Test

tests.py


from django.contrib.auth.models import User
from django.test import TestCase, Client
from django.test.utils import override_settings

#Le nom de la classe doit commencer par test.
# override_Les paramètres sont-ils un décorateur qui écrase temporairement les paramètres pendant les tests? Cela semble être un gars.
@override_settings(TEST=True)
class Test_example_View(TestCase):
    #Fonctions qui effectuent des tests dans la classe Fonctions qui sont exécutées avant que toutes soient exécutées.
    #Si vous souhaitez créer des données ou avez besoin de la même opération, écrivez-les ici.
    def setUp(self):
        User.objects.create_user(username='tdd', email='[email protected]', password='test_pass') 
        self.client = Client()

    #Une fonction à tester. Pas besoin de mettre le test en premier
    def test_redirect(self):
        response = self.client.get('/')
        #Fonctions qui confirment le bon fonctionnement. Il y a plusieurs choses, donc je vais mettre un peu
        #Si le côté droit n'est pas égal au côté gauche, affichez le message d'erreur sur la droite
        self.assertEqual(response.status_code, 302, "N'a pas redirigé.")
        #Si le côté droit n'est pas inclus dans le côté gauche, affichez le message d'erreur sur la droite
        self.assertIn('data', response.context, "Il n'y a pas de données.")
        #Si le côté gauche n'est pas vrai, affichez le message d'erreur droit
        self.assertTrue(response.context['flag'], "Le drapeau est incorrect.")

Recommended Posts

[Django] Commandes utilisées personnellement, modèles de code, TDD [Memo]
8 commandes fréquemment utilisées dans Python Django
Commandes Linux fréquemment utilisées [Personal Memo]
Résumé des commandes fréquemment utilisées de django (débutant)
Code souvent utilisé dans les applications Python / Django [préfectures]
Mémo d'apprentissage Django
mémo du didacticiel django
[Pour les débutants] Django Commandes fréquemment utilisées et collection de références