Bonsoir,

Ayant fait du PHP pendant presque 10 ans à faible niveau mais m'ayant permis de réaliser pas mal de petits sitesweb, je m'essaie aujourd'hui à Django/Python pour refaire mon site principal.
Je commence donc par l'inscription des utilisateurs, et l'ai presque finie. J'aimerais savoir si le code écrit était correct ou s'il me fallait revoir certaines choses.

Pourriez-vous vérifier ce code et me dire ce qui ne va pas ?

Merci d'avance.

membres.models.py:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
from django.db import models
from django.contrib.auth.models import User
 
class UserProfile(models.Model):
	user = models.OneToOneField(User)
	slug = models.SlugField(max_length=30)
	avatar = models.ImageField(null=True, blank=True, upload_to="images/")
 
	def __str__(self):
		return self.user
 
class UserProfilePublic(models.Model):
	FREQUENCY_CHOICES = (
		('', ''),
		('1', 'Moins de 2 romans'),
		('2', 'Entre 2 et 5 romans'),
		('3', 'Entre 6 et 10 romans'),
		('4', 'Plus de 2 romans')
	)
 
	user = models.OneToOneField(User)
	website = models.URLField(blank=True)
	facebook = models.URLField(blank=True)
	twitter = models.URLField(blank=True)
	google = models.URLField(blank=True)
	hobbies = models.CharField(max_length=250, blank=True)
	books_frequency = models.CharField(max_length=1, choices=FREQUENCY_CHOICES, default='')
	favorite_types_of_book = models.TextField(blank=True)
	favorite_books = models.TextField(blank=True)
	quote = models.CharField(max_length=250, blank=True)
 
	def __str__(self):
		return self.user
 
class UserProfilePrivate(models.Model):
	user = models.OneToOneField(User)
	address = models.CharField(max_length=250, blank=True)
	address_bis = models.CharField(max_length=250, blank=True)
	zipcode = models.CharField(max_length=5, blank=True)
	address_bis = models.CharField(max_length=30, blank=True)
 
	def __str__(self):
		return self.user
membres.forms.py (je n'ai pas encore fini mes vérifications, je dois gérer le cas de l'unicité des utilisateurs et une regex pour l'email):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
from django import forms
 
class RegisterForm(forms.Form):
	username = forms.CharField(min_length=5, max_length=30, required=True)
	email = forms.EmailField(max_length=75, required=True)
	password = forms.CharField(widget=forms.PasswordInput, required=True)
	password_check = forms.CharField(widget=forms.PasswordInput, required=True)
 
	def clean(self):
		cleaned_data = super(RegisterForm, self).clean()
		password = cleaned_data.get('password')
		password_check = cleaned_data.get('password_check')
 
		# Username
 
		# Email
 
		# Password
		if password_check != password:
			msg = "Le mot de passe et sa confirmation doivent être identiques"
			self.add_error('password', msg)
 
		return cleaned_data
membres.views.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
from django.shortcuts import render
from django.template.defaultfilters import slugify
from django.contrib.auth.models import User
from membres.models import UserProfile, UserProfilePublic, UserProfilePrivate
from membres.forms import RegisterForm
 
def register(request):
	if request.method == 'POST':
		form = RegisterForm(request.POST)
 
		if form.is_valid():
			username = form.cleaned_data['username'].strip()
			email = form.cleaned_data['email']
			password = form.cleaned_data['password']
			slug = slugify(username)
 
			user = User.objects.create_user(username, email, password)
			profile = UserProfile(user= user, slug= slug)
			profile.save()
			profile_public = UserProfilePublic(user= user)
			profile_public.save()
			profile_private = UserProfilePrivate(user= user)
			profile_private.save()
 
			form_validated = True
 
	else:
		form = RegisterForm()
 
	return render(request, 'membres/register.html', locals())
Quelques remarques : Slugify ne me convient pas, en existe-t-il un plus puissant ? Puis-je, sinon, modifier Slugify et si oui comment ? J'ai entendu parler de post_save mais ne comprend pas du tout, mais alors pas du tout comment le faire fonctionner dans mon cas.

Je reviendrai probablement vers vous pour le traitement AJAX du formulaire. J'ai fait tout le JS sauf cette partie.

Si ça ne se fait pas de créer un topic pour ce genre de choses, n'hésitez pas à me prévenir, je le supprimerai.

Merci d'avance et bonne soirée.

Cordialement,