سلام و تشکر بابت آموزش بی نظیرتون استاد اردوخانی عزیز
من در نوشتن عملیات ثبت نام با یه مشکلی مواجه شدم اونم اینه که وقتی اطلاعات فرم میخوان پردازش بشن username و email با اینکه اطلاعاتش وارد شده اما None برمیگردونه و فقط مقدار پسورد قابل ملاحظه هستش و اینم پیام ارور هستش:
ValueError at /register
The given username must be set
اینم کد های مربوطه:
forms.py:
from django import forms
from django.contrib.auth.models import User
class RegisterForm(forms.Form):
username = forms.CharField(widget=forms.TextInput(attrs=sameClasses), required=True)
email = forms.EmailField(widget=forms.EmailInput(attrs=sameClasses), required=True)
password = forms.CharField(widget=forms.PasswordInput(attrs=sameClasses), required=True)
password2 = forms.CharField(label='Confirm Password', widget=forms.PasswordInput(attrs=sameClasses), required=True)
def clean_username(self):
user_name = self.cleaned_data.get('username')
qs = User.objects.filter(username=user_name)
if qs.exists():
raise forms.ValidationError('this username is already taken')
def clean_email(self):
user_email = self.cleaned_data.get('email')
qs = User.objects.filter(email=user_email)
if qs.exists():
raise forms.ValidationError('this email is already taken')
def clean(self):
pw = self.cleaned_data.get('password')
pw2 = self.cleaned_data.get('password2')
if pw != pw2:
raise forms.ValidationError('passwords should be same')
views.py:
from django.contrib.auth.models import User
def register(request):
form = RegisterForm(request.POST or None)
context = {
'pageTitle': 'Register',
'linkedPages': [
{'link': '/', 'name': 'Home'},
{'link': '/login', 'name': 'Login'}
],
'formMethod': 'POST',
'formId': 'reg-form',
'form': form,
'btnId': 'reg-btn',
'btnContent': 'Register'
}
if form.is_valid():
username = form.cleaned_data.get('username')
email = form.cleaned_data.get('email')
password = form.cleaned_data.get('password')
new_user = User.objects.create_user(username, email=email, password=password)
new_user.save()
return redirect('/login')
else:
context['form'] = RegisterForm()
return render(request=request, template_name='auth/auth.html', context=context)
auth.html:
<form action="" method="{{ formMethod }}" id="{{ formId }}">
{% csrf_token %}
{{ form }}
<button type="submit" id="{{ btnId }}">{{ btnContent }}</bu
</form>
ورژن جنگو هم 3.1 هستش
سلام دوست من
دستور زیر رو ویرایش کنین:
new_user = User.objects.create_user(username=username, email=email, password=password)