Freitag I / O. Bei Wamuu Co., Ltd. ist jeder Freitag ein Tag, an dem wir an dem arbeiten, woran wir interessiert sind, und die Ergebnisse auf irgendeine Weise ausgeben. Jeder sollte am Freitag machen, was er will!
Heutzutage gibt es verschiedene nützliche Sprachen wie Golang, aber wenn Sie eine Webanwendung erstellen möchten, ist dies das stärkste (ich persönlich denke) Python Django
.
Dieses Mal habe ich versucht, die Bibliotheken zusammenzufassen, die ich beim Erstellen von Webanwendungen mit Django immer verwende.
django-cacheops
https://github.com/Suor/django-cacheops
Es ist eine Bibliothek, die den DB-Zugriff über ORM ohne Berechtigung zwischenspeichert. Es ist sehr praktisch, weil es gut ist, wenn man es nur hineinsteckt und ein wenig einstellt. Darüber hinaus gibt es auch die Mechanismen "Funktionscache" und "Cache anzeigen", sodass es sich gut anfühlt, diese vorerst zu verwenden.
django-choices
https://github.com/bigjason/django-choices
Eine Bibliothek, mit der Sie Modell- und Formularauswahl sauber schreiben können.
#Wie schreibe ich gewöhnliche Entscheidungen
class Person(models.Model):
# Choices
PERSON_TYPE = (
("C", "Customer"),
("E", "Employee"),
("G", "Groundhog"),
)
# Fields
name = models.CharField(max_length=32)
type = models.CharField(max_length=1, choices=PERSON_TYPE)
# django-Bei der Verwendung von Auswahlmöglichkeiten
from djchoices import DjangoChoices, ChoiceItem
class Person(models.Model):
# Choices
class PersonType(DjangoChoices):
customer = ChoiceItem("C")
employee = ChoiceItem("E")
groundhog = ChoiceItem("G")
# Fields
name = models.CharField(max_length=32)
type = models.CharField(max_length=1, choices=PersonType.choices)
Dies ist praktisch, da es auch als Konstante verwendet werden kann.
person = Person.objects.get(1)
if person.type == Person.PersonType.customer:
pass
django-debug-toolbar
https://github.com/jazzband/django-debug-toolbar
Unnötig zu erwähnen, dass nützliche Funktionen zum Debuggen auf dem Bildschirm angezeigt werden. Ohne das kann ich nicht mehr arbeiten. Setzen Sie es wegen des Hirntodes ein.
django-extensions
https://github.com/django-extensions/django-extensions/
Wie der Name schon sagt, eine Bibliothek, die Django auf verschiedene Arten erweitert. Hinzufügen verschiedener nützlicher Befehle zu manage.py und Automatische Vervollständigungsfunktion zum Verwaltungsbildschirm hinzufügen oder Nützliche Modellfelder vorbereiten .html) Es gibt viel zu tun.
Der folgende Befehl zum Anzeigen der URL-Liste ist praktisch.
./manage.py show_urls
Es gibt auch eine Funktion namens runserver_plus. Wenn Sie diese verwenden, können Sie sie auf dem im Browser angezeigten Fehlerbildschirm debuggen. Wird sein!
Um runserver_plus
verwenden zu können, benötigen Sie eine Bibliothek namens Werkzeug.
./manage.py runserver_plus 0.0.0.0:8000
django-import-export
https://github.com/django-import-export/django-import-export
Eine Bibliothek, mit der Sie CSV-Dateien usw. über den Verwaltungsbildschirm importieren und exportieren können.
Onkel sofort Bitte gib mir eine CSV-Datei! Es ist praktisch, dies einzugeben, da es
heißt.
Es kann Formate (Excel oder JSON) verarbeiten, die von tablib unterstützt werden.
Wenn Sie es standardmäßig verwenden, wird es unnötig viel Verarbeitung und es wird schwer sein, so dass es ein Front-Miso ist, aber ich denke, dass Sie sich auf den folgenden Artikel beziehen sollten.
Warum Django-Import-Export-Import so langsam ist und was zu tun ist
django-polymorphic
https://github.com/django-polymorphic/django-polymorphic
Eine Bibliothek, die Sie unbedingt einschließen sollten, wenn Sie [Djangos Multi-Table-Vererbung] verwenden (https://docs.djangoproject.com/de/1.11/topics/db/models/#multi-table-inheritance). Die Modellinstanz wird ohne Erlaubnis heruntergestuft.
from polymorphic.models import PolymorphicModel
class Animal(PolymorphicModel):
name = models.CharField('name', max_length=50)
class Dog(Animal):
def say(self):
return '{}:Hund'.format(self.name)
class Cat(Animal):
def say(self):
return '{}:Nyan'.format(self.name)
Dog.objects.create(name='Pochi')
Cat.objects.create(name='Tama')
for animal in Animal.objects.all():
print(animal.say()) #"Wanwan" für Hunde und "Nyan" für Katzen
django-security
https://github.com/sdelements/django-security/
Eine Bibliothek, die viel Middleware für Sicherheitsmaßnahmen enthält. Sie können es selbst schreiben, aber wenn Sie es bereits haben, ist es einfacher zu verwenden.
django-storages
https://github.com/jschneier/django-storages
Es ist eine praktische Bibliothek, die Sie verwenden können, wenn Sie hochgeladene Dateien mit "S3" verwalten möchten. Es ist wichtig, wenn die Webanwendung redundant konfiguriert ist.
django-widget-tweaks
https://github.com/jazzband/django-widget-tweaks
Ich denke, es gibt Zeiten, in denen Sie beim Rendern eines Django-Formulars eine `Klasse hinzufügen möchten, aber das ist ziemlich ärgerlich, nicht wahr? Sie sollten auf jeden Fall "Django-Widget-Tweaks" verwenden, da es präzise geschrieben werden kann.
So ist es im Django-Standard geschrieben. .. ..
# forms.py
class LoginForm(forms.Form):
username = forms.CharField(
'Nutzername',
max_length=100,
widget=forms.TextInput(attrs={'class': 'input-username'})
)
password = forms.CharField(
'Passwort',
max_length=100,
widget=forms.PasswordInput(attrs={'class': 'input-password'})
)
---
<!-- login.html -->
<form>
{{ form.username }}
{{ form.passowrd }}
<button type="submit">Login</button>
</form>
Dies ist, was passiert, wenn Sie "Django-Widget-Tweaks" verwenden.
# forms.py
class LoginForm(forms.Form):
username = forms.CharField('Nutzername', max_length=100)
password = forms.CharField('Passwort', max_length=100)
---
<!-- login.html -->
{% load widget_tweaks %}
<form>
{% render_field form.username class="input-username" %}
{% render_field form.passowrd class="input-password" type="password" %}
<button type="submit">Login</button>
</form>
Es ist schön, weil Sie in der Atmosphäre des Schreibens von HTML schreiben können.
django-betterforms
https://github.com/fusionbox/django-betterforms
Es ist eine Bibliothek, mit der Sie Formulare erstellen können, die den juckenden Ort erreichen können. Besonders praktisch ist MultiForm, mit dem Sie mehrere Formulare als ein Formular verwenden können.
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ('username', 'password')
class ProfileForm(forms.ModelForm):
class Meta:
model = Profile
fields = ('first_name', 'last_name')
class UserProfileMultiForm(MultiModelForm):
form_classes = {
'user': UserForm,
'profile': ProfileForm,
}
class UserSignupView(CreateView):
form_class = UserProfileMultiForm
success_url = reverse_lazy('home')
def form_valid(self, form):
user = form['user'].save()
profile = form['profile'].save(commit=False)
profile.user = user
profile.save()
return redirect(self.get_success_url())
djangorestframework
Es ist eine sehr praktische Bibliothek, die Sie verwenden können, wenn Sie mit Django einen "Rest API Server" erstellen möchten. Es ist eine riesige Bibliothek, die ich nicht leugnen kann, dass es sich um eine Bibliothek oder ein anderes Framework handelt. Da es riesig und schwer zu erklären ist, bezog ich mich auf den Eintrag eines großen Vorfahren.
API mit explosiver Geschwindigkeit mithilfe des Django REST Framework implementieren
FactoryBoy
https://github.com/FactoryBoy/factory_boy
Dies ist sehr nützlich, wenn Sie die zum Testen erforderlichen Modelldaten erstellen! Sie können auch zusammen verwandte Daten erstellen, sodass Sie die Daten beim Schreiben eines Tests nicht vorbereiten müssen.
class ProfileFactory(DjangoModelFactory):
user = factory.SubFactory('app.users.factories.UserFactory')
name = Faker('name')
name_kana = Faker('kana_name')
class Meta:
model = Profile
django_get_or_create = ('user',)
class UserFactory(DjangoModelFactory):
email = Faker('email')
password = factory.PostGenerationMethodCall('set_password', 'hogehoge')
profile = factory.RelatedFactory(ProfileFactory, 'user')
class Meta:
model = User
django_get_or_create = ('email',)
user = UserFactory()
assert user.profile.name is not None
dateutil
https://github.com/dateutil/dateutil/
Django ist eine Python-Bibliothek, aber ich werde sie schreiben, weil es praktisch ist. Wie der Name schon sagt, handelt es sich um eine Bibliothek, die ein "Dienstprogramm zum Bearbeiten von Datum und Uhrzeit" bietet. relativedelta, eine erweiterte Version von timedelta .html) ist sowieso praktisch. Sie können nur "timedelta" bis zu "n Tagen" angeben, aber mit "relativedelta" können Sie "n Monate" angeben.
assert datetime(2000, 1, 1) + relativedelta(months=1) == datetime(2000, 2, 1)
datetime(2000, 1, 31) + relativedelta(months=1) == datetime(2000, 2, 29)
Auch parser, das das Standardformat für Datum und Uhrzeit automatisch analysiert, ist nützlich.
assert parse('2000-10-15') == datetime(2000, 10, 15)
Raven (Sentry)
https://docs.sentry.io/clients/python/integrations/django/
Die Bibliothek ist ein "Fehlerverfolgungsdienst-Client", aber ich werde sie vorstellen, weil sie sehr praktisch ist. Es erkennt Ausnahmen, die in der Web-App ausgelöst werden, und sendet Benachrichtigungen an E-Mails und Slack. Wenn Sie sicherstellen, dass Sie benachrichtigt werden, wenn ein Fehler in der Produktionsumgebung auftritt, können Sie sich einschleichen, bevor die Onkel wütend werden. Sie können die Details des Fehlers auch auf dem Sentry-Verwaltungsbildschirm überprüfen, sodass Sie sich nicht die Mühe machen müssen, die Protokolldatei zu durchsuchen. Die Geschwindigkeit, mit der Fehler behoben werden, wird sich dramatisch verbessern. Verwenden Sie sie daher bitte.
Es gibt viele andere Bibliotheken in Django, daher denke ich, dass es Spaß macht, nach ihnen zu suchen. Awesome Django hat eine große Anzahl von Bibliotheken, daher ist es eine gute Idee, einen Blick darauf zu werfen.
Ich bin froh, wenn Sie mir sagen können "Ich hatte eine nützliche Bibliothek" oder "Ich habe es gemacht, weil ich es nicht habe".