Ошибка значения в / signup/ Указанное имя пользователя должно быть установлено

#python #html #django

#python #HTML #django

Вопрос:

итак, в основном я создавал этот веб-сайт для блогов, и теперь я застрял на этом этапе процесса регистрации, вся работа выполняется с использованием django

views.py:

 def handleSignup(request):
    if request.method == 'POST':
        # getting user parameters
        username =  request.POST.get('username')
        fname =  request.POST.get('fname')
        lname =  request.POST.get('lname')
        email =  request.POST.get('email')
        pass1 =  request.POST.get('pass1')
        pass2 =  request.POST.get('pass2')
        # fname = request.POST['fname']
        # lname = request.POST['lname']
        # email = request.POST['email']
        # pass1 = request.POST['pass1']
        # pass2 = request.POST['pass2']
        

    # creating users

        myuser = User.objects.create_user(username = username, email = email, password = pass1)
        myuser.first_name = fname
        myuser.last_name = lname
        myuser.save()
        messages.success(request, 'your account have been successfully created!')
        
        return redirect(request, 'home')

    else:
        return HttpResponse("error 404 not found")
  

форма в base.html:

 <form action="/signup/" method="post">

            <div class="form-group">
              <label for="username">Username</label>
              <input type="text" class="form-control" id="username" placeholder="choose a unique username">
            </div>

            <div class="form-group">
              <label for="fname">Firstname</label>
              <input type="text" class="form-control" id="fname" placeholder="First Name">
            </div>

            <div class="form-group">
              <label for="lname">Lastname</label>
              <input type="text" class="form-control" id="lname" placeholder="Last Name">
            </div>

            <div class="form-group">
              <label for="email">Email</label>
              <input type="email" class="form-control" id="email" placeholder="email@example.com">
            </div>

            <div class="form-group">
              <label for="pass1">Choose Password</label>
              <input type="password" class="form-control" id="pass1">
            </div>

            <div class="form-group">
              <label for="pass2">Confirm password</label>
              <input type="password" class="form-control" id="pass2">
            </div>
            {% csrf_token %}
            <button type="submit" class="btn btn-primary">Submit</button>

          </form>
  

теперь я получаю эту ошибку:

 ValueError at /signup/
The given username must be set
Request Method: POST
Request URL:    http://127.0.0.1:8000/signup/
Django Version: 3.1
Exception Type: ValueError
Exception Value:    
The given username must be set
Exception Location: C:Usersjayant nigamprojectspractiselibsite-packagesdjangocontribauthmodels.py, line 135, in _create_user
Python Executable:  C:Usersjayant nigamprojectspractiseScriptspython.exe
Python Version: 3.8.5
Python Path:    
['C:\Users\jayant nigam\projects\everythingcs',
 'C:\Python38\python38.zip',
 'C:\Python38\DLLs',
 'C:\Python38\lib',
 'C:\Python38',
 'C:\Users\jayant nigam\projects\practise',
 'C:\Users\jayant nigam\projects\practise\lib\site-packages']
Server time:    Mon, 28 Sep 2020 16:21:27  0000
  

как вы, ребята, можете видеть в views.py Я уже пробовал fname = request.POST['fname'] , но затем я получил то MultiValueDictKeyError , что искал в сети, и получил предложение использовать request.POST.get(' ') , и после его использования я столкнулся с вышеуказанной ошибкой

Ответ №1:

Вы должны добавить name в свое поле ввода в HTML:

 <div class="form-group">
      <label for="username">Username</label>
      <input type="text" class="form-control" id="username" name="username" placeholder="choose a unique username">
</div>
  

Вы не вводите name ни в одно из полей ввода. Сервер принимает данные из формы на основе name , но not id . Итак, укажите имя для каждого входного тега в вашей форме. И все готово.

Комментарии:

1. Спасибо, приятель, я застрял в этой проблеме на целый день, и теперь она решена!