• 1399/06/16

ValueError at /register :

سلام و تشکر بابت آموزش بی نظیرتون  استاد اردوخانی عزیز

من در نوشتن عملیات ثبت نام با یه مشکلی مواجه شدم اونم اینه که وقتی اطلاعات فرم میخوان پردازش بشن 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 هستش

  • 1399/06/16
  • ساعت 19:48

سلام دوست من

دستور زیر رو ویرایش کنین:

 new_user = User.objects.create_user(username=username, email=email, password=password)

logo-enamadlogo-samandehi