Не отбражаются поля формы django django-widget-tweaks
У меня не отображаются поля формы. Я только пытаюсь разобраться. Понимаю, что у меня просто неопределена форма. Подскажите что не так я увязал?
views.py
from django.shortcuts import render, redirect
from django.contrib import messages
from users.forms import UserRegisterForm
def register(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
messages.success(request, f'Ваш аккаунт создан: можно войти на сайт.')
return redirect('home')
else:
form = UserRegisterForm()
return render(request, 'templates/register.html', {'form': form})
forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm
from users.models import Profile
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = Profile
fields = ['first_name', 'last_name', 'email', 'password1', 'password2']
widgets = {
'first_name' : forms.CharField (attrs={'class': 'form-group'}),
'last_name' : forms.CharField (attrs={'class': 'form-group'}),
'email': forms.EmailInput(attrs={'class': 'form-group'}),
'usermane': forms.EmailInput(attrs={'class': 'form-group'}),
'password1': forms.PasswordInput(attrs={'class': 'form-group'}),
'password2': forms.PasswordInput(attrs={'class': 'form-group'}),
}
def clean_password2(self):
password1 = self.cleaned_data.get("password1")
password2 = self.cleaned_data.get("password2")
if password1 and password2 and password1 != password2:
raise forms.ValidationError(
self.error_messages['password_mismatch'],
code='password_mismatch',
)
return password2
models.py
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
email = models.EmailField(max_length=254)
username = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default='default.jpg', upload_to='profile_pics')
def __str__(self):
return f'{self.user.username} Profile'
template.html
{% extends "base.html" %}
{% load widget_tweaks %}
{% block title %}reg{% endblock title %}
{% block header %}
<h1 class="col-5 font-monospace d-print-block" style="color: #d1a618;">регистрируемся</h1>
{% endblock header %}
{% block content %}
<div class="content-section col-3 p-lg-5 mx-auto">
<form method="POST">
{% csrf_token %}
<div class="form-group d-grid gap-5">
{% render_field form.first_name class+="form-group" placeholder="First Name" type="text" %}
{% render_field form.username type="text" class="form-group" id="exampleInputUsername" placeholder="логин" %}
{% render_field form.password1 type="password" class="form-group" id="exampleInputPassword" placeholder="пароль" %}
{% render_field form.password2 type="password" class="form-group" id="exampleInputPassword1" placeholder="подтвердить" %}
<button class="btn btn-outline-warning input-group-addon" type="submit">Регистрация</button>
<div class="form-item">
{% if form.username.errors %} {{ form.username.errors }} {% endif %}
<label for="id_username" class="form-label">Введите логин</label>
{% render_field form.username class="form-input" placeholder="Введите имя"%}
</div>
</form>
<div class="text-center">
<small class="text-warning">Уже есть аккаунт? <a class="ml-2" href={% url 'login' %}>Вход</a></small>
</div>
</div>
{% endblock content %}
и ошибка соответственно во вложении