- how to implement these files into my project ? - have i to startapp “register” into my project ? - i believe models.py , urls.py , forms.py and Admin.py should be put into the register folder .... - login.html in the folder templates/ Thanks Franz
Verstuurd vanaf mijn iPhone > Op 8 nov. 2019 om 22:04 heeft DANIEL URBANO DE LA RUA > <[email protected]> het volgende geschreven: > > Hablas español? > >> On Fri, 8 Nov 2019, 17:59 Daniel Angel, <[email protected]> wrote: >> LOGIN.HTML >> >> {% extends "register/base.html" %} >> {% block content %} >> >> >> <div class="row"> >> <!-- Lado izquierdo, área de inicio de sesión--> >> <div class="card col-md-6"> >> <img class="mb-4" src="static/img/logo8.png" alt="" width="100"> >> <div class="card-body"> >> <form action="{% url 'register:login' %}" method="POST"> >> >> {{ form.non_field_errors }} >> {% for field in form %} >> {{ field }} >> {{ field.errors }} >> <hr> >> {% endfor %} >> <button type="submit" class="btn btn-primary" >Iniciar >> sesión</button> >> <input type="hidden" name="next" value="{{ next }}" /> >> {% csrf_token %} >> </form> >> </div> >> </div><!--A la izquierda, el área de inicio de sesión ha terminado --> >> >> <!-- Lado derecho, área de registro de miembros --> >> <div class="card col-md-6"> >> <div class="card-body"> >> <a href="{% url 'register:user_create' %}" class="btn >> btn-primary" >Registro de Cliente </a><hr> >> <a href="{% url 'register:password_reset' %}" class="btn >> btn-primary" >Olvidé mi contraseña</a> >> </div> >> </div><!-- Fin del área de registro de membresía a la derecha --> >> </div> >> >> {% endblock %} >> >> >> MODELO.PY >> >> >> >> from django.db import models >> from django.core.mail import send_mail >> from django.contrib.auth.models import PermissionsMixin >> from django.contrib.auth.base_user import AbstractBaseUser >> from django.utils.translation import ugettext_lazy as _ >> from django.utils import timezone >> from django.contrib.auth.base_user import BaseUserManager >> from apps.validators import validaRut >> >> class UserManager(BaseUserManager): >> """Administrador de usuariosー""" >> use_in_migrations = True >> >> def _create_user(self, email, password, **extra_fields): >> """Create and save a user with the given username, email, and >> password.""" >> if not email: >> raise ValueError('The given email must be set') >> email = self.normalize_email(email) >> >> user = self.model(email=email, **extra_fields) >> user.set_password(password) >> user.save(using=self._db) >> return user >> >> def create_user(self, email, password=None, **extra_fields): >> extra_fields.setdefault('is_staff', False) >> extra_fields.setdefault('is_superuser', False) >> return self._create_user(email, password, **extra_fields) >> >> def create_superuser(self, email, password, **extra_fields): >> extra_fields.setdefault('is_staff', True) >> extra_fields.setdefault('is_superuser', True) >> >> if extra_fields.get('is_staff') is not True: >> raise ValueError('Superuser must have is_staff=True.') >> if extra_fields.get('is_superuser') is not True: >> raise ValueError('Superuser must have is_superuser=True.') >> >> return self._create_user(email, password, **extra_fields) >> >> >> class User(AbstractBaseUser, PermissionsMixin): >> """Modelo de usuario personalizado >> >> username Sin usar、email La dirección se usa como nombre de usuario. >> >> """ >> email = models.EmailField(_('dirección de correo electrónico'), >> unique=True) >> first_name = models.CharField(_('Nombre'), max_length=30, blank=True) >> last_name = models.CharField(_('Apellido'), max_length=150, blank=True) >> rut = models.CharField(_('Rut'), validators= [validaRut], >> max_length=10,blank=True, help_text="Ejemplo: 1111111-1") >> >> is_staff = models.BooleanField( >> _('staff status'), >> default=False, >> help_text=_( >> 'Designa si el usuario puede iniciar sesión en este sitio de >> administración.'), >> ) >> is_active = models.BooleanField( >> _('active'), >> default=True, >> help_text=_( >> 'Designa si este usuario debe ser tratado como activo. ' >> 'Anule la selección de esto en lugar de eliminar cuentas.' >> ), >> ) >> date_joined = models.DateTimeField(_('date joined'), >> default=timezone.now) >> >> objects = UserManager() >> >> EMAIL_FIELD = 'email' >> USERNAME_FIELD = 'email' >> REQUIRED_FIELDS = [] >> >> class Meta: >> verbose_name = _('user') >> verbose_name_plural = _('users') >> >> def get_full_name(self): >> """Devuelve el primer nombre más el último nombre, con un espacio""" >> full_name = '%s %s' % (self.first_name, self.last_name, self.rut) >> return full_name.strip() >> >> def get_short_name(self): >> """Devuelve el nombre corto para el usuario.""" >> return self.first_name >> >> def get_rut_name(self): >> """Devuelve el rut.""" >> return self.rut >> >> def email_user(self, subject, message, from_email=None, **kwargs): >> """Enviar un correo electrónico a este usuario.""" >> send_mail(subject, message, from_email, [self.email], **kwargs) >> >> @property >> def username(self): >> return self.email >> >> >> URLS.PY >> >> >> >> from django.urls import path >> from . import views >> >> app_name = 'register' >> >> urlpatterns = [ >> path('', views.Top.as_view(), name='top'), >> path('login/', views.Login.as_view(), name='login'), >> path('logout/', views.Logout.as_view(), name='logout'), >> path('user_create/', views.UserCreate.as_view(), name='user_create'), >> path('user_create/done/', views.UserCreateDone.as_view(), >> name='user_create_done'), >> path('user_create/complete/<token>/', >> views.UserCreateComplete.as_view(), name='user_create_complete'), >> path('user_detail/<int:pk>/', views.UserDetail.as_view(), >> name='user_detail'), >> path('user_update/<int:pk>/', views.UserUpdate.as_view(), >> name='user_update'), >> path('password_change/', views.PasswordChange.as_view(), >> name='password_change'), >> path('password_change/done/', views.PasswordChangeDone.as_view(), >> name='password_change_done'), >> path('password_reset/', views.PasswordReset.as_view(), >> name='password_reset'), >> path('password_reset/done/', views.PasswordResetDone.as_view(), >> name='password_reset_done'), >> path('password_reset/confirm/<uidb64>/<token>/', >> views.PasswordResetConfirm.as_view(), name='password_reset_confirm'), >> path('password_reset/complete/', views.PasswordResetComplete.as_view(), >> name='password_reset_complete'), >> path('email/change/', views.EmailChange.as_view(), name='email_change'), >> path('email/change/done/', views.EmailChangeDone.as_view(), >> name='email_change_done'), >> path('email/change/complete/<str:token>/', >> views.EmailChangeComplete.as_view(), name='email_change_complete'), >> ] >> >> FORMS.PY >> >> >> >> from django import forms >> from django.contrib.auth.forms import ( >> AuthenticationForm, UserCreationForm, PasswordChangeForm, >> PasswordResetForm, SetPasswordForm >> ) >> from django.contrib.auth import get_user_model >> >> User = get_user_model() >> >> >> class EmailChangeForm(forms.ModelForm): >> """Formulario de cambio de dirección de correo electrónico""" >> >> class Meta: >> model = User >> fields = ('email',) >> >> def __init__(self, *args, **kwargs): >> super().__init__(*args, **kwargs) >> for field in self.fields.values(): >> field.widget.attrs['class'] = 'form-control' >> >> def clean_email(self): >> email = self.cleaned_data['email'] >> User.objects.filter(email=email, is_active=False).delete() >> return email >> >> >> class LoginForm(AuthenticationForm): >> """Formulario de acceso""" >> >> def __init__(self, *args, **kwargs): >> super().__init__(*args, **kwargs) >> for field in self.fields.values(): >> field.widget.attrs['class'] = 'form-control' >> field.widget.attrs['placeholder'] = field.label # placeholder >> Poner etiqueta de campo en >> >> >> class UserCreateForm(UserCreationForm): >> """Formulario de registro de usuario""" >> >> class Meta: >> model = User >> fields = ('email',) >> >> def __init__(self, *args, **kwargs): >> super().__init__(*args, **kwargs) >> for field in self.fields.values(): >> field.widget.attrs['class'] = 'form-control' >> >> def clean_email(self): >> email = self.cleaned_data['email'] >> User.objects.filter(email=email, is_active=False).delete() >> return email >> >> >> class UserUpdateForm(forms.ModelForm): >> """Formulario de actualización de información del usuario""" >> >> class Meta: >> model = User >> fields = ('last_name', 'first_name','rut',) >> >> def __init__(self, *args, **kwargs): >> super().__init__(*args, **kwargs) >> for field in self.fields.values(): >> field.widget.attrs['class'] = 'form-control' >> >> >> class MyPasswordChangeForm(PasswordChangeForm): >> """Formulario de cambio de contraseña""" >> >> def __init__(self, *args, **kwargs): >> super().__init__(*args, **kwargs) >> for field in self.fields.values(): >> field.widget.attrs['class'] = 'form-control' >> >> >> class MyPasswordResetForm(PasswordResetForm): >> """Olvidé el formulario de contraseña""" >> >> def __init__(self, *args, **kwargs): >> super().__init__(*args, **kwargs) >> for field in self.fields.values(): >> field.widget.attrs['class'] = 'form-control' >> >> >> class MySetPasswordForm(SetPasswordForm): >> """Formulario de restablecimiento de contraseña (olvidé la contraseña y >> restablecí)""" >> >> def __init__(self, *args, **kwargs): >> super().__init__(*args, **kwargs) >> for field in self.fields.values(): >> field.widget.attrs['class'] = 'form-control' >> >> >> >> ADMIN.PY >> >> >> from django.contrib import admin >> from django.contrib.auth.admin import UserAdmin >> from django.contrib.auth.forms import UserChangeForm, UserCreationForm >> from django.utils.translation import ugettext_lazy as _ >> from .models import User >> >> >> class MyUserChangeForm(UserChangeForm): >> class Meta: >> model = User >> fields = '__all__' >> >> >> class MyUserCreationForm(UserCreationForm): >> class Meta: >> model = User >> fields = ('email',) >> >> >> class MyUserAdmin(UserAdmin): >> fieldsets = ( >> (None, {'fields': ('email', 'password')}), >> (_('Personal info'), {'fields': ('first_name', 'last_name')}), >> (_('Permissions'), {'fields': ('is_active', 'is_staff', >> 'is_superuser', >> 'groups', 'user_permissions')}), >> (_('Important dates'), {'fields': ('last_login', 'date_joined')}), >> ) >> add_fieldsets = ( >> (None, { >> 'classes': ('wide',), >> 'fields': ('email', 'password1', 'password2'), >> }), >> ) >> form = MyUserChangeForm >> add_form = MyUserCreationForm >> list_display = ('email', 'first_name', 'last_name', 'rut', 'is_staff') >> list_filter = ('is_staff', 'is_superuser', 'is_active', 'groups') >> search_fields = ('email', 'first_name', 'last_name', 'rut') >> ordering = ('email',) >> >> >> admin.site.register(User, MyUserAdmin) >> >> >> SETTINGS.PY >> >> >> >> INSTALLED_APPS = [ >> 'register.apps.RegisterConfig', >> 'django.contrib.admin', >> 'django.contrib.auth', >> 'django.contrib.contenttypes', >> 'django.contrib.sessions', >> 'django.contrib.messages', >> 'django.contrib.staticfiles', >> 'apps.cliente', >> ] >> >> >> >> EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' >> >> >> >> EMAIL_USE_TLS= True >> EMAIL_HOST= 'smtp.gmail.com' >> EMAIL_PORT= 25 >> EMAIL_HOST_USER= '[email protected]' >> EMAIL_HOST_PASSWORD='password' >> EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend' >> >> >> >> >> >> >> >> >> >> >> >>> El vie., 8 nov. 2019 a las 12:58, Paras Jain (<[email protected]>) >>> escribió: >>> I want to send mail and password to this particular email I'd which will >>> be used for future login >>> Problem is how to send mail and connect that password with database how it >>> gonna be possible stuck Need help >>> Please find the file aatached below nd thanks >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Django users" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/django-users/CAMtmBS_R739__nZ2-ZYxPwsWAcn2o62hWPXNLrFRxx9w9nMoHQ%40mail.gmail.com. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/django-users/CA%2By6opqPLy7Puzxj2Ha%2BH9tJgfCJQJPcgsdrKsjNM6_CAckV%2BA%40mail.gmail.com. > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/CAO_yRT1rji_cYTa5HXCVcQDz661D2P%2BpzGov2_BQeGtf4FQ9xA%40mail.gmail.com. -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/042AC579-CAB4-4F5F-9F8A-1EDD5B1FCCAB%40gmail.com.

