如何使用Django注册通过电子邮件进行注册

2024-09-27 09:38:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Django进行一个小项目,我安装了Django注册来创建注册功能,但正如我所看到的,注册是通过用户名而不是通过电子邮件进行的

包的链接:https://django-registration-redux.readthedocs.io/

我怎样才能解决这个问题

这是我的表格

from django_registration.forms import RegistrationForm

from .models import CustomUser

class CustomUserForm(RegistrationForm):

    class Meta(RegistrationForm.Meta):
        model = CustomUser

Tags: 项目djangofromhttpsimport功能链接电子邮件
1条回答
网友
1楼 · 发布于 2024-09-27 09:38:01

您所指示的可以直接使用django身份验证系统执行的操作

Django的官方文档中,它告诉我们如何扩展用户模型

我一步一步地离开你

1.-创建一个应用程序(在本例中,我们称之为“用户”)

2.-在文件users/models.py中,我们导入AbstractUser类并创建User类

from django.db import models
from django.contrib.auth.models import AbstractUser


class User(AbstractUser):
       email = models.EmailField('email address', unique=True)
       USERNAME_FIELD = 'email'   
       REQUIRED_FIELDS = ['username'] 

3.-在settings.py文件中,您指的是通过输入代码创建的类

AUTH_USER_MODEL = 'users.User'

4.-您准备并执行迁移

python manage.py makemigrations
python manage.py migrate

5.-创建超级用户以验证其是否已通过电子邮件进行验证,通常在创建超级用户时,它要求的第一件事是用户名,但在我们进行了这些更改后,它要求的第一件事是您的电子邮件

python manage.py createsuperuser

6.-在文件users/views.py中,我们输入视图行为的代码

from django.contrib.auth import views as auth_views
from django.views import generic
from django.urls import reverse_lazy
from users.forms import LoginForm, RegisterForm

class LoginView(auth_views.LoginView):
form_class = LoginForm
template_name = 'registration/login.html'
success_url = reverse_lazy('home')

class RegisterView(generic.CreateView):
form_class = RegisterForm
template_name = 'registration/signup.html'
success_url = reverse_lazy('login')

7.-在users/forms.py文件中,我们指的是AuthenticationForm类

from django.contrib.auth.forms import UserCreationForm,AuthenticationForm
from django.contrib.auth import get_user_model
from django import forms

class LoginForm(AuthenticationForm):
username = forms.CharField(label='Email / Username')

class RegisterForm(UserCreationForm):
class Meta:
    model = get_user_model()
    fields = ('email', 'first_name', 'last_name','username', 'password1', 'password2')

8.-在URL.py文件中输入代码

from django.contrib import admin
from django.urls import path
from users import views

urlpatterns = [
path('admin/', admin.site.urls),
path('login/', views.LoginView.as_view(), name='login'),
path('register/', views.RegisterView.as_view(), name='register')

]

9.-在模板文件夹中,创建一个文件“login.html”,例如使用以下代码

 <form  method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit" class="btn btn-sm btn-outline-dark">Accesar</button>
</form>

10.-在模板文件夹中,创建一个文件“signup.html”,例如,使用以下代码

   <form  method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit" class="btn btn-outline-dark">Register</button>
  </form>

-你终于开始运行程序了

python manage.py runserver

我希望这些信息对你有用 问候

相关问题 更多 >

    热门问题