Передача значений через post с помощью Django

#html #django #url #post #parameters

#HTML #django #url #Публикация #параметры

Вопрос:

Я пытаюсь создать форму регистрации через html / django, поэтому у меня есть 3 поля ввода, в которые пользователь может ввести адрес электронной почты, имя пользователя и пароль, который затем отправляет их через POST в / adduser

 <form action="/OmniCloud_App/adduser" method="post">
{% csrf_token %}
  Email Address: <input type="text" name="email" /></br>
  Username: <input type="text" name="username" maxlength=25 /></br>
  Password: <input type="password" maxlength=30 /></br>
  </br>
  <input type="submit" value="Send" /> <input type="reset">
</form>
  

создатель создает нового пользователя и сохраняет его в БД:

 def adduser(request, email, username, password):
    u = User(email=email, username=username, password=password)
    u.save()
    return render_to_response('adduser.html', {'email':email, 'username':username, 'password':password})
  

но когда я нажимаю отправить / зарегистрироваться, он жалуется, что я даю ему только 1 параметр, когда ожидалось 3. Как мне передать поля электронной почты, имени пользователя и пароля из signup.html в функцию username (находится по адресу /username)?

Ответ №1:

Если вы прочитаете часть 3 руководства, вы увидите, что функция просмотра ожидает части самого URL в качестве аргументов. Если вы прочитаете часть 4 того же руководства, вы увидите, что параметры POST поступают через request.POST . Далее в документации вы узнаете, что вы можете писать классы форм, которые обрабатывают как генерацию, так и проверку HTML-форм.

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

1. Хорошо, итак, я использовал это, но теперь он говорит, что пароль не является частью запроса POST, но, похоже, у него есть адрес электронной почты, имя пользователя и что-то прикольное, называемое csrfmiddlewaretoken. Почему бы ему также не отправить поле пароля формы?

2. Потому что вы забыли дать ему имя. Что является еще одной причиной для использования Django forms.

3. Ты слишком хорош. Я загляну в класс form, просто хотел сначала пройти этот чертов учебник, ха-ха. Огромное спасибо!

Ответ №2:

они будут в request.POST , которые вы можете запрашивать, как если бы dict

 email = request.POST.get('email')
username = request.POST.get('username')
password = request.POST.get('password')
  

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

1. Слово, которое вы ищете, — это «отображение» .

2. Но как заполнить POST?