¿Cómo puedo enviar el correo electrónico haciendo un enlace de confimación para hacer clic en él?
-
28-10-2019 - |
Pregunta
modelos.py:
class Users(models.Model):
username = models.CharField(max_length=255)
slug = models.CharField(max_length=255, default='0')
password = models.CharField(max_length=300)
passwordrepeat = models.CharField('Repeat Password', max_length=300)
password_token = models.CharField(max_length=300, default='0')
email = models.CharField(max_length=255)
email_verified = models.BooleanField(default=False)
email_token = models.CharField(max_length=255)
email_token_expiry = models.DateTimeField()
tos = models.BooleanField(default=False)
active = models.BooleanField(default=False)
last_login = models.DateTimeField(auto_now_add=True)
last_action = models.DateTimeField(auto_now_add=True)
is_admin = models.BooleanField(default=False)
role = models.CharField(max_length=255, default='0')
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
return self.username
class UsersModelForm(forms.ModelForm):
class Meta:
model = Users
fields = ('username', 'password', 'passwordrepeat', 'email')
widgets = {
'password' : PasswordInput(),
'passwordrepeat' : PasswordInput(),
}
Views.py:
def register(request):
flag = True
possible = '0123456789abcdefghijklmnopqrstuvwxyz'
token = ''
current_datetime = datetime.datetime.now()
user = UsersModelForm()
if request.method == 'POST':
userf = UsersModelForm(request.POST)
username = userf.data['username']
password = userf.data['password']
passwordrepeat = userf.data['passwordrepeat']
email = userf.data['email']
password = bcrypt.hashpw(password,bcrypt.gensalt())
passwordrepeat = bcrypt.hashpw(passwordrepeat,bcrypt.gensalt())
userf.data['password'] = password
userf.data['passwordrepeat'] = passwordrepeat
if password != passwordrepeat:
flag = False
passVariable = {'user':user, 'flag': False}
return render_to_response('register.html', passVariable, context_instance=RequestContext(request))
elif password == passwordrepeat:
for i in range(1,10):
temp = random.choice(possible)
token = token + temp
print token
if userf.is_valid():
check = userf.save(commit=False)
check.email_token = token
check.email_token_expiry = current_datetime + timedelta(1)
check.save()
return HttpResponseRedirect('/')
else:
return render_to_response('register.html', {"user": user, 'flag': True}, context_instance=RequestContext(request))
Después de guardar los datos en la tabla, necesito enviar al usuario ese token para confirmar la dirección de correo electrónico para el registro. ¿Cómo puedo hacer esto?
Será muy apreciado si alguien me ayuda a solucionarlo.
Solución
De los documentos en https://docs.djangoproject.com/en/dev/topics/email/
from django.core.mail import send_mail
send_mail('Subject here', 'Here is the message.', 'from@example.com',
['to@example.com'], fail_silently=False)
:-)
Otros consejos
Usar registro de django, Viene con toda esta lógica y más, gratis. Tenga en cuenta que es más fácil comenzar con algunos Ejemplos de plantilla.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow