На странице регистрации веб-приложения Django я хочу просто запросить желаемое имя пользователя и адрес электронной почты, и система отправит случайно сгенерированный пароль на указанный идентификатор пользователя.Что мне с этим делать?
Я использую django 2.2.2 и python 3.7.3.Я использую crispy_forms для визуализации форм.
Соответствующая документация по формам django здесь .
Я уже использовал переменную "exclude" в Meta-классе моего класса UserRegisterForm,Смотрите код, чтобы точно узнать, что я сделал
В forms.py
файле:
class UserRegisterForm(UserCreationForm):
"""
Inheriting the UserCreationForm class to add some additional fields in
the registration form because the #s of fields
in the UserCreationForm class has less fields than required.
We add email field in this extended class.
"""
email = forms.EmailField()
class Meta:
model = User
fields = ("username", "email")
exclude = ("password1", "password2")
Мой register.html
файл шаблона:
{% extends "blog/base.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block content %}
<div class="content-section">
<form method="POST">
{% csrf_token %}
<fieldset class="form-group">
<legend>
Join here!
</legend>
{{ form|crispy }}
</fieldset>
<div>
<button>Sign up!</button>
</div>
</form>
<small class="text-muted">
Already have an account? Sign in <a href="{% url "login" %}" class="ml-2">here</a>.
</small>
</div>
{% endblock content %}
мой views.py
файл:
def register(request):
"""
Triggered when AnonymousUser clicks on the 'Sign Up' button anywhere on the site
The process:
1. User visits registration page
2. User enters his/her email only.
3. System makes an account in the database & sends an email
to that id with the password.
4. User logs in the website using that password
"""
if not request.user.is_authenticated:
if request.method == "POST":
request.POST = request.POST.copy() # To make the request.POST mutable
request.POST['password1'] = get_random_alphanumeric_password(_max_len=8)
request.POST['password2'] = request.POST['password1']
form = UserRegisterForm(request.POST)
if form.is_valid():
form.save()
# WORKS!
messages.success(request, _(f"Account successfully created"))
send_mail(subject=_(f"KBank - Password for {request.POST['username']}"),
message=_(f"Thanks for signing up at KBank. The password is {request.POST['password1']}"),
from_email=os.environ.get("EMAIL_USER"),
recipient_list=[f"{request.POST['email']}"],
)
messages.info(request, _("Please check your email for password & log in using that"))
return redirect('login')
else:
form = UserRegisterForm()
return render(request, "users/register.html", {"form": form})
else:
return redirect("site-home")
Ошибка в двух полях, запрашивающих пароль1 и пароль 2 все еще отображается на моей странице регистрации.