J'ai un site basé sur Django qui permet aux utilisateurs de s'inscrire (mais nécessite un administrateur pour approuver le compte avant de pouvoir voir certaines parties du site). Je me base sur django.contrib.auth
. Je demande aux utilisateurs de s'inscrire avec une adresse e-mail à partir d'un certain nom de domaine, donc j'ai remplacé les méthodes UserCreationForm
save()
et clean_email()
.Comment puis-je améliorer cette vue "register" dans Django?
Ma page d'inscription utilise la vue suivante. Je suis intéressé à savoir comment je pourrais améliorer ces améliorations de code de vue ou de processus (ou toute autre chose, vraiment).
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
message = None
form.save()
username = form.cleaned_data['username']
password = form.cleaned_data['password1']
user = authenticate(username=username, password=password)
first_name = form.cleaned_data['first_name']
last_name = form.cleaned_data['last_name']
email = user.email
# If valid new user account
if (user is not None) and (user.is_active):
login(request, user)
message = "<strong>Congratulations!</strong> You have been registered."
# Send emails
try:
# Admin email
pk = None
try: pk = User.objects.filter(username=username)[0].pk
except: pass
admin_email_template = loader.get_template('accounts/email_notify_admin_of_registration.txt')
admin_email_context = Context({
'first_name': first_name,
'last_name': last_name,
'username': username,
'email': email,
'pk': pk,
})
admin_email_body = admin_email_template.render(admin_email_context)
mail_admins("New User Registration", admin_email_body)
# User email
user_email_template = loader.get_template('accounts/email_registration_success.txt')
user_email_context = Context({
'first_name': form.cleaned_data['first_name'],
'username': username,
'password': password,
})
user_email_body = user_email_template.render(user_email_context)
user.email_user("Successfully Registered at example.com", user_email_body)
except:
message = "There was an error sending you the confirmation email. You should still be able to login normally."
else:
message = "There was an error automatically logging you in. Try <a href=\"/login/\">logging in</a> manually."
# Display success page
return render_to_response('accounts/register_success.html', {
'username': username,
'message': message,
},
context_instance=RequestContext(request)
)
else: # If not POST
form = UserCreationForm()
return render_to_response('accounts/register.html', {
'form': form,
},
context_instance=RequestContext(request)
)
Mon site ne verra jamais beaucoup de trafic - c'est pour un petit club, mais merci pour le reste des suggestions! Ils étaient très utiles. – Tyson
Merci pour le vote en place et la réponse acceptée, mais votre question n'est pas facile ... pourrait vouloir me donner un vote pour le moment et donner plus de temps pour les autres à répondre. Quelqu'un d'autre pourrait avoir une meilleure réponse! :) –