Как я могу создать форму регистрации, используя собственную юзермодель в django
Я хотел создать свою собственную форму регистрации без использования хрустящих формы, я хотел придать свой собственный стиль форме, пожалуйста, помогите мне с шагами или дайте мне ссылку на учебник.
Спасибо
Вы можете использовать виджет tweak. Я думаю, это поможет вам создать свою собственную рег форму
Создайте HTML форму в вашем шаблоне Django, с method
как POST
. Пример формы:
<form action="/register/">
<label for="username">Username</label><br>
<input type="text" id="username" name="username"><br>
<label for="password">Email</label><br>
<input type="email" id="email" name="email"><br><br>
<label for="password">Password</label><br>
<input type="password" id="password" name="password"><br><br>
<input type="submit" value="Submit">
</form>
Добавьте любой стиль, который вы захотите.
Теперь вы всегда можете request.POST.get("username")
, request.POST.get("password")
и request.POST.get("email")
, но это грубо и может быть небезопасно. Django forms поможет вам использовать все встроенные в Django меры безопасности.
В вашем forms.py
,
from django.contrib.auth.models import User
class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
class Meta():
model = User
fields = ('username','password','email')
Первая строка импортирует модель User из Django. В следующих строках этот код создает форму, и, наконец, указываются поля username
, password
, email
,
Теперь, в представлении регистра, вы можете, во-первых, импортировать форму, которую вы создали в forms.py
, а затем
from app.forms import UserForm
def register(request):
if request.method == "POST":
user_form = UserForm(data=request.POST)
if user_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()
else:
print(user_form.errors)
return redirect("/login/")
else:
user_form = UserForm()
return render(request, "app/registration.html", {"user_form": user_form})
В приведенном выше коде я импортирую форму. Затем я проверяю, является ли метод POST
, потому что если нет, то это означает, что форма еще не была отправлена, а только появилась на странице в первый раз. Затем я передаю введенные данные в форму. Если форма валидна, я отправляю форму в модель. Но вы не можете просто ввести пароль в виде обычного текста в модель. Его нужно закодировать. set_password
кодирует, хэширует и солит пароль, так что даже если кому-то удастся взломать ваш сайт, он не сможет получить доступ к чьим-либо учетным записям, потому что пароли хранятся в виде случайных строк, и даже если бы он ввел случайную строку в форму входа, она бы не сработала, смотрите видео Computerphile об алгоритмах хэширования и безопасности, чтобы узнать больше. Затем я сохраняю запись в модели пользователя, и пользователь был зарегистрирован. Я перенаправляю на вход в систему, и это условие if выполняется. Затем нам нужно обработать то, что произойдет, если метод запроса будет get и пользователь впервые оказался на странице регистрации. Я передаю форму пользователя в шаблон здесь.
Надеюсь, это помогло, спасибо.