Ceci est mon mémorandum. J'ai fait beaucoup de recherches pour ma propre étude, mais comme il y avait beaucoup d'explications pour la version 2 etc., c'était compliqué, donc je vais le résumer dans une certaine mesure. Je l’écris dans l’espoir qu’il profitera à ceux qui ont rencontré des problèmes similaires. Veuillez regarder avec des yeux chaleureux! (N'hésitez pas à apporter des corrections)
Vous pouvez comprendre la plupart des choses en faisant un tutoriel (approprié) https://docs.djangoproject.com/ja/3.1/intro/tutorial01/
Environnement d'utilisation
・ OS ... windows10
・ Python ... 3.7.6
・ Django ... 3.1.3
Je suis désolé s'il y a un oubli. Le paquet est probablement
pip install django
pip install pillow
Cela aurait dû être juste ...! !!
J'écrirai principalement là où je suis tombé d'ici.
Je voulais implémenter la fonction, j'ai donc créé ma propre fonction de connexion. Comme un flux
2:
model.py
class User(AbstractUser):
pass
Et vient d'hériter de AbstractUser. Pour le moment, le document officiel dit que vous devez créer le vôtre en remplaçant. Vous pouvez ajouter vos colonnes préférées en éditant ici. [Se référer à l'utilisateur abstrait] https://docs.djangoproject.com/en/3.1/topics/auth/customizing/
3: Je pensais aux options suivantes comme méthode d'implémentation des fonctions de connexion et de déconnexion.
view.py
from django.contrib.auth import authenticate, login
def my_view(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
# Redirect to a success page.
...
else:
# Return an 'invalid login' error message.
...
aussi bien que
Méthode utilisant View Source de référence: https://docs.djangoproject.com/ja/3.1/topics/auth/default/
Je l'ai implémenté ici car l'utilisation de View réduit la quantité de code, mais il semble que la méthode intuitivement facile à comprendre soit la méthode de traitement dans l'ancienne méthode. Lorsque vous utilisez View, assurez-vous de vérifier les variables à l'intérieur. Les causes du code inutile et des erreurs sont répertoriées de manière relative. En parlant cette fois, Form est la valeur par défaut car elle est utilisée lors de la définition d'un nom de classe en html. Je ne modifie que template_name et j'hérite du reste tel quel. La déconnexion est implémentée de la même manière, elle est donc omise.
4: Le nouvel écran d'enregistrement a le plus trébuché. J'écrirai à partir de la conclusion.
view.py
def signup(request):
if request.method == 'POST':
form = UserCreateForm(request.POST)
if form.is_valid():
form.save()
else:
print(form.errors)
return redirect('/login')
return render(request, 'loginauth/create_user.html')
def redirect_view(request):
response = redirect('/login')
return response
forms.py
class UserCreateForm(UserCreationForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['username'].widget.attrs['class'] = 'form-control'
self.fields['password1'].widget.attrs['class'] = 'form-control'
self.fields['password2'].widget.attrs['class'] = 'form-control'
self.fields['email'].widget.attrs['class'] = 'form-control'
class Meta:
model = User
fields = ("username", "password1","password2", "email",)
C'est comme ça. Je vais le compléter.
La partie la plus compliquée personnellement
Views.py
form = UserCreateForm (request.POST)
était.
Pour résumer brièvement ce que vous faites
Il existe un formulaire pour créer un utilisateur appelé UserCreationForm,
Définir le modèle: utilisateur et champs du formulaire.
Extrayez le contenu de views.py qui correspond aux champs de request.POST et vérifiez si les mots de passe1 et 2 correspondent à form.is_valid ().
S'ils correspondent, enregistrez-les tels quels.
C'est un flux. Source de référence: https://docs.djangoproject.com/ja/3.1/topics/auth/default/ https://docs.djangoproject.com/ja/3.1/topics/auth/default/#django.contrib.auth.forms.UserCreationForm Si vous lisez ici, vous pouvez voir comment l'écrire.
Recommended Posts