Ich habe einen Webservice mit Django gemacht. Es war fertig, aber ich überprüfte noch einmal, wo es flauschig war.
Beispiel:
class Profile(models.Model):
~~ Felddefinition weggelassen ~~
@receiver(post_save, sender=User)
def create_profile(sender, **kwargs):
if kwargs['created']:
user_profile = Profile.objects.get_or_create(user=kwargs['instance'])
def __str__(self):
return str(self.user)
@receiver @receiver ist ein Signal, eine Funktion, die den registrierten Prozess aufruft, wenn ein Ereignis auftritt. Das in diesem Beispiel verwendete post_save bedeutet, dass es unmittelbar nach dem Hinzufügen oder Ändern eines Datensatzes für das vom Absender angegebene Modell (in diesem Fall Benutzer) ausgeführt wird.
**kwargs Wenn Sie ein Argument mit ** like ** kwargs definieren, können Sie eine beliebige Anzahl von Schlüsselwortargumenten angeben. In der Funktion wird es als Wörterbuch empfangen, in dem der Argumentname der Schlüsselschlüssel und der Wert der Wert ist. In diesem Beispiel nehmen wir den Absender als Argument und prüfen, ob die Instanz mit der if-Anweisung erstellt wurde.
get_or_create Wenn das Objekt nicht vorhanden ist, wird es registriert, und wenn es vorhanden ist, wird es nicht registriert.
def str(self) Prozess, der aufgerufen wird, wenn str oder print auf eine Instanz angewendet wird
Beispiel:
class CommentCreateForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in self.fields.values():
field.widget.attrs['class'] = 'form-control'
class Meta:
model = Comment
fields = ('text',)
*args Dies bedeutet, ob Argumente variabler Länge als Tupeltyp oder Diktattyp verwendet werden sollen.
class Meta Klasse Meta ist ein Ort, an dem etwas definiert wird, das keine Felddefinition ist.
Recommended Posts