[PYTHON] [Django] Persönlich verwendete Befehle, Codevorlagen, TDD [Memo]

Wie der Titel schon sagt. Fügen Sie Dinge hinzu, von denen Sie glauben, dass sie schneller aufzuschreiben sind als nachzuschlagen

Memo (Befehl)

Befehl Inhalt
python manage.py inspectdb [Table name] Erstellen Sie ein Modell einer vorhandenen Datenbank

Memo (Programmvorlage)

url Die Struktur der Datei

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

Beachten Sie, dass es sich um einen Code handelt, wenn er so aussieht (ich werde ihn vorerst im Kommentar hinzufügen).

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):
    #Nur ein Zeichenfeld
    text_Field = forms.CharField()
    #50 Zeichen oder weniger
    #Nicht benötigt(Anfangswert ist erforderlich)
    #Nicht benötigt(Textbereichsformat)
    text_Area = forms.CharField(max_length=50, required=False, widget=forms.Textarea)
    #Taple der Wahl.(Tatsächlicher Wert,Anzeigewert)
    #Machen Sie es zu einem Optionsfeld(Ursprünglich herunterziehen)
    #Ursprünglicher Wert(Geben Sie den tatsächlichen Wert an)
    radio_button= forms.fields.ChoiceField(
                        choices = (('1','value1'),('2','value2')),
                        widget=RadioSelect,
                        initial=2
                    )
    #Dateifeld
    file_field = forms.FileField()

    #Fügen Sie dem Element hier eine Klasse hinzu. HTML<input name="aaa" value=... />Entspricht dem Teil von
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # text_Zur Feldklasse hinzufügen_Klasse hinzufügen
        self.fields["text_Field"].widget.attrs['class']='add_class'

    #Nehmen Sie eine benutzerdefinierte Validierung vor
    # clean_[Feldname]Kann eine Validierung für bestimmte Felder mit erstellen
    #Wenn die Validierung nicht erfolgreich ist, sollten Sie einen Fehler mit dem Auslöser ValidationError ausgeben.
    def clean_text_Field(self):
        text_Field = self.cleaned_data['text_Field']
        if re.fullmatch(r'^[a-z0-9-]+$',text_Field) == None:
            raise ValidationError("Nicht verfügbare Zeichen werden verwendet")
        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

#Der Klassenname sollte mit test beginnen.
# override_Ist Settings ein Dekorateur, der Einstellungen während des Tests vorübergehend überschreibt? Es scheint ein Typ zu sein.
@override_settings(TEST=True)
class Test_example_View(TestCase):
    #Funktionen, die Tests in der Klasse ausführen Funktionen, die ausgeführt werden, bevor alle ausgeführt werden.
    #Wenn Sie Daten erstellen möchten oder denselben Vorgang benötigen, schreiben Sie diese hier.
    def setUp(self):
        User.objects.create_user(username='tdd', email='[email protected]', password='test_pass') 
        self.client = Client()

    #Eine zu testende Funktion. Keine Notwendigkeit, den Test an die erste Stelle zu setzen
    def test_redirect(self):
        response = self.client.get('/')
        #Funktionen, die den korrekten Betrieb bestätigen. Es gibt verschiedene Dinge, also werde ich ein wenig sagen
        #Wenn die rechte Seite nicht der linken Seite entspricht, wird rechts die Fehlermeldung angezeigt
        self.assertEqual(response.status_code, 302, "Nicht umgeleitet.")
        #Wenn die rechte Seite nicht auf der linken Seite enthalten ist, wird die Fehlermeldung rechts angezeigt
        self.assertIn('data', response.context, "Keine Daten verfügbar.")
        #Wenn die linke Seite nicht True ist, wird die rechte Fehlermeldung angezeigt
        self.assertTrue(response.context['flag'], "Die Flagge ist falsch.")

Recommended Posts

[Django] Persönlich verwendete Befehle, Codevorlagen, TDD [Memo]
8 häufig verwendete Befehle in Python Django
Häufig verwendete Linux-Befehle [Persönliches Memo]
Zusammenfassung der häufig verwendeten Befehle von Django (Anfänger)
Code, der häufig in Python / Django-Apps verwendet wird [Präfekturen]
Django Lernnotiz
Django Tutorial Memo
[Für Anfänger] Django Häufig verwendete Befehle und Referenzsammlung