Dans le dernier avril de Heisei (27 avril 2019), Django a publié une bibliothèque qui peut être un peu utile, et l'autre jour, elle a dépassé 10000 DL, j'aimerais donc écrire un article.
Django-Boost
GitHub https://github.com/ChanTsune/django-boost
À l'INIAD, j'ai eu l'occasion d'apprendre le framework d'application web Python Django dans la conférence, j'ai donc décidé de rendre le Django que j'utilisais à l'époque utile.
Il est un peu plus facile de faire ce que vous voulez faire lorsque vous développez avec Django. En particulier,
Il existe de nombreuses autres petites fonctions, mais je les omettrai cette fois car elles sont détaillées et sobres. Pour plus d'informations, consultez la documentation (https://django-boost.readthedocs.io/).
$ pip install django_boost
Entrez avec pip.
Ajoutez des paramètres pour activer django_boost
dans votre projet Django.
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_boost', #Postscript
]
Ajoutez le contenu suivant au fichier de paramètres.
settings.py
AUTH_USER_MODEL = 'django_boost.EmailUser'
Remplacez le modèle utilisateur standard de Django par un utilisateur qui se connecte avec une adresse e-mail au lieu d'un nom d'utilisateur. Il a les mêmes champs que le modèle utilisateur standard de Django.
En ajoutant la description suivante au fichier modèle, les fonctions intégrées de Python peuvent être utilisées comme filtres et balises dans le modèle Django.
template.html
{% load boost %}
Liste des fonctions intégrées de Python https://docs.python.org/ja/3/library/functions.html
Personnellement, j'utilise souvent la fonction format
lors du formatage des chaînes.
{% load boost %}
{{ value|format:"," }} {#Afficher les nombres tous les 3 chiffres séparés par des virgules#}
«zip» est également très pratique.
De plus, pendant le développement, je pense qu'il est pratique de voir une liste de types de variables et d'attributs dans le modèle, tels que type
et dir
.
Bien qu'il ne s'agisse pas d'une fonction intégrée, il existe également des balises qui vous permettent de créer des objets à partir de chaînes littérales.
Dans l'exemple ci-dessous, une liste est créée.
template.html
{%load boost %}
{% literal "[1,2,3]" as lst %}
{% for i in lst %}
<p>{{ i }}</p>
{% endfor %}
Si vous créez plusieurs modèles pour une application, les «motifs d'url» deviendront plus difficiles à voir. Cependant, il peut être utilisé lorsqu'il est difficile de diviser le fichier.
urls.py
from django_boost.urls import UrlSet
class YourModelUrlSet(UrlSet):
app_name = "YourModel"
urlpatterns = [
path('xxx/', ..., name="XXX")
path('yyy/', ..., name="YYY")
path('zzz/', ..., name="ZZZ")
]
urlpatterns = [
path('path/to/model/', include(YourModelUrlSet))
]
Il sera plus facile de voir si vous divisez chaque modèle en vues CRUD. Je pense qu'il est également pratique de pouvoir séparer l'espace de noms pour chaque modèle.
Je pense que c'est une bonne idée d'émettre un 404 lorsque vous ne remplissez pas les conditions d'autorisation de visualisation. D'autres exceptions peuvent également être levées.
Pour l'utiliser, vous devez en ajouter un peu au fichier de configuration.
settings.py
MIDDLEWARE = [
'django_boost.middleware.HttpStatusCodeExceptionMiddleware', #Postscript
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
J'ai ajouté un middleware.
Dans cet état, si vous lancez une exception dans le processus d'affichage, le code d'état sera retourné.
Dans l'exemple ci-dessous, une exception Http302
est lancée pour rediriger.
views.py
from django.shortcuts import render
from django_boost.http.response import Http302
def my_view(request):
if request.user.email == "":
raise Http302("/register/email/")
return render(request, "mypage.html")
En plus du 302, il couvre la plupart des codes d'état.
Si vous souhaitez utiliser un modèle personnalisé, placez [code d'état] .html
directement sous le répertoire des modèles et il sera utilisé.
Si vous créez une vue sur une base de classe, vous pouvez créer une page qui nécessite une authentification à intervalles réguliers en héritant de la classe de mixage comme indiqué ci-dessous.
view.py
from datetime import timedelta
from django_boost.views.mixins import ReAuthenticationRequiredMixin
class MyView(ReAuthenticationRequiredMixin,TemplateView):
template_name = '...'
auth_unnecessary = timedelta(hours=1)
Variable de classe ʻauth_unnecessaire` En définissant l'intervalle de ré-authentification, la ré-authentification sera demandée quand il y a une période plus longue que l'intervalle défini depuis la dernière connexion.
Pour ʻauth_unnecessaire, vous pouvez spécifier le nombre de secondes avec ʻint
, ou vous pouvez le spécifier avec timedelta
.
Lors de la validation d'un formulaire, vous souhaitez souvent modifier les conditions de validation pour chaque utilisateur.
Dans un tel cas, en héritant des classes mix-in suivantes respectivement à la classe Form et à la classe View, vous pouvez toucher les informations utilisateur avec self.user
depuis la classe Form.
forms.py
from django import forms
from django_boost.forms.mixins import FormUserKwargsMixin
class MyForm(FormUserKwargsMixin,Form):
email = forms.EmailField()
def email_clean(self):
if self.user.email: #Adresse e-mail de l'utilisateur connecté
...
...
views.py
form django_boost.views.mixins import ViewUserKwargsMixin
from .forms import MyForm
class MyView(ViewUserKwargsMixin,FormView):
form_class = MyForm
...
Vous pouvez utiliser la commande pour générer automatiquement le fichier de paramètres requis lors du déploiement de l'application Django sur heroku.
$ python manage.py support_heroku
Generated : /Users/username/project/Procfile
Generated : /Users/username/project/runtime.txt
Generated : /Users/username/project/requirements.txt
Procfile
, runtime.txt
, requirements.txt
sont générés automatiquement.
Si un fichier avec le même nom existe, il ne sera pas généré, donc si vous voulez l'écraser et le générer, ajoutez l'option --overwrite
.
$ python manage.py support_heroku --overwrite
Comme je l'ai mentionné au début, il existe de nombreuses autres fonctionnalités petites et sobres, donc si vous êtes intéressé, veuillez consulter Documentation. S'il te plait donne moi.
Les développeurs seront ravis de recevoir les étoiles! https://github.com/ChanTsune/django-boost