Как я могу создать форму регистрации, используя собственную юзермодель в django

Я хотел создать свою собственную форму регистрации без использования хрустящих формы, я хотел придать свой собственный стиль форме, пожалуйста, помогите мне с шагами или дайте мне ссылку на учебник.

Спасибо

Вы можете использовать виджет tweak. Я думаю, это поможет вам создать свою собственную рег форму

https://github.com/jazzband/django-widget-tweaks

Создайте 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 и пользователь впервые оказался на странице регистрации. Я передаю форму пользователя в шаблон здесь.

Надеюсь, это помогло, спасибо.

Вернуться на верх