#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. Спасибо, приятель, я застрял в этой проблеме на целый день, и теперь она решена!