Wie der Titel schon sagt. Fügen Sie Dinge hinzu, von denen Sie glauben, dass sie schneller aufzuschreiben sind als nachzuschlagen
Befehl | Inhalt |
---|---|
python manage.py inspectdb [Table name] | Erstellen Sie ein Modell einer vorhandenen Datenbank |
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