У меня проблема с моим приложением, регистрация не создает профили на сервере.Я пытался использовать формы django, но мне не понравилось, как они отображаются, поэтому я хотел использовать пользовательскую форму, но как только я нажимаю кнопку «Отправить», ничего не происходит, и я проверяю на бэкэнде, что нет профиля.
Мой файл forms.py выглядит так
from django.forms import ModelForm
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from .models import Gig
class GigForm(ModelForm):
class Meta:
model = Gig
fields = ['title','category','description', 'price', 'photo', 'status']
class SignUpForm(forms.ModelForm):
first_name = forms.CharField(max_length=30, required=False, help_text='Optional.')
last_name = forms.CharField(max_length=30, required=False, help_text='Optional.')
email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'password' )
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
avatar = models.CharField(max_length=500)
about = models.CharField(max_length=500)
location = models.CharField(max_length=30, blank=True)
def __str__(self):
return self.user.username
signup.html выглядит так
<div class="container1">
<img src="{% static 'img/home-banner.jpg' %}" class="banner">
<form action="#" name="myForm" method="post" onsubmit="return(validate());">
{% csrf_token %}
<div class="container-fluid">
<div class="row">
<div class="well center-block">
<div class="well-header">
<h1 class="text-center "><b>Sign Up</b></h1>
</br>
<hr>
</div>
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="form-group">
<div class="input-group">
<div class="input-group-addon">
<i class="glyphicon glyphicon-user"></i>
</div>
<input type="text" placeholder="First Name" class="form-control"
name="{{ form.first_name.name }}"
id="{{ form.first_name.id_for_label }}"
{% if form.name.value != None %}value="{{ form.first_name.value|stringformat:'s' }}"{% endif %}
maxlength="{{ form.first_name.field.max_length }}"
{% if form.name.field.required %}required{% endif %}>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<div class="input-group">
<div class="input-group-addon">
<i class="glyphicon glyphicon-user"></i>
</div>
<input type="text" placeholder="Last Name" name="txtlname" class="form-control"
name="{{ form.last_name.name }}"
id="{{ form.last_name.id_for_label }}"
{% if form.name.value != None %}value="{{ form.last_name.value|stringformat:'s' }}"{% endif %}
maxlength="{{ form.last_name.field.max_length }}"
{% if form.name.field.required %}required{% endif %}>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<div class="input-group">
<div class="input-group-addon">
<i class="glyphicon glyphicon-user"></i>
</div>
<input type="text" placeholder="User Name" name="txtlname" class="form-control"
name="{{ form.username.name }}"
id="{{ form.username.id_for_label }}"
{% if form.name.value != None %}value="{{ form.username.value|stringformat:'s' }}"{% endif %}
maxlength="{{ form.username.field.max_length }}"
{% if form.username.field.required %}required{% endif %}>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="form-group">
<div class="input-group">
<div class="input-group-addon">
<i class="glyphicon glyphicon-lock"></i>
</div>
<input type="password" minlength="8" maxlength="20" placeholder="Password" name="txtpass" class="form-control"
name="{{ form.password.name }}"
id="{{ form.password.id_for_label }}"
{% if form.password.value != None %}value="{{ form.password.value|stringformat:'s' }}"{% endif %}
maxlength="{{ form.password.field.max_length }}"
{% if form.password.field.required %}required{% endif %}>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 col-xs-12 col-sm-12">
<div class="form-group">
<div class="input-group">
<div class="input-group-addon">
<i class="glyphicon glyphicon-envelope"></i>
</div>
<input type="email" class="form-control" name="txtmail" placeholder="E-Mail"
name="{{ form.email.name }}"
id="{{ form.email.id_for_label }}"
{% if form.password.value != None %}value="{{ form.email.value|stringformat:'s' }}"{% endif %}
maxlength="{{ form.email.field.max_length }}"
{% if form.password.field.required %}required{% endif %}>
</div>
</div>
</div>
</div>
<div class="row widget">
<div class="col-md-12 col-xs-12 col-sm-12">
<button class="btn btn-warning btn-block"> Submit </button>
</div>
</div>
</div>
</div>
</div>
</form>
Views.py выглядит так
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
form.save()
user.refresh_from_db()
username = form.cleaned_data.get('username')
user.save()
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=user.username, password=raw_password)
login(request, user)
return redirect('home.html')
else:
form = SignUpForm()
return render(request, 'signup.html', {'form': form})