Web2py - Как обработать пользовательскую форму регистрации? - PullRequest
0 голосов
/ 05 января 2019

Я пытаюсь создать собственный вид / форму регистрации и заставить его работать с auth.register (), но пока мне не повезло. У меня в основном две проблемы.

  1. Если я не включу response.view = 'register.html' в моем контроллере, ссылка register.html по умолчанию переходит на страницу регистрации по умолчанию в web2py (которая работает, но я не хочу использовать).

  2. Если я удалил response.view = 'register.html' из функции контроллера, появится моя пользовательская форма / представление, но она не будет отправлена ​​/ подтверждена. Он просто продолжает выдавать сообщение об ошибке «К сожалению, при отправке формы что-то пошло не так»

В каждом потоке, который я читал об этом, просто говорится, чтобы указать form = auth.register () в контроллере и использовать {{= form.custom.end}} в представлении, но, похоже, это не так Работа. Я что-то упустил?

Я также попытался указать действие обратного вызова для формы на action="{{=URL('default', 'register')}}, но если я добавлю это, страница также ничего не изменит при отправке.

Вот мой код:

Контроллер: (в default.py)

def register():
    response.view = 'register.html'
    db.auth_user.first_name.readable = db.auth_user.first_name.writable = False
    db.auth_user.last_name.readable = db.auth_user.last_name.writable = False
    return dict(form=auth.register())

Просмотр (default / register.html)

<body class="body-4">
 <div class="form-block w-form">
   <form id="email-form" name="email-form" data-name="Email Form">
     <h1 class="heading-5">Register</h1>
        <input type="email" class="text-field w-input" maxlength4="256" name="Email" data-name="Email" placeholder="Enter your email" id="Email" required="">
        <input type="password" class="text-field w-input" maxlength="256" name="Password" data-name="Password" placeholder="Enter your password" id="Password" required="">
        <input type="password" class="text-field w-input" maxlength="256" name="Password-2" data-name="Password 2" placeholder="Confirm your password" id="Password-2" required="">
        <input type="submit" value="Register" data-wait="Please wait..." class="submit-button w-button">
    {{=form.custom.end}}
    <div class="w-form-done">
      <div>Thank you! Your submission has been received!</div>
    </div>
    <div class="w-form-fail">
      <div>Oops! Something went wrong while submitting the form.</div>
    </div>
  </div>
  <script src="{{=URL('static','js/webflow.js')}}" type="text/javascript"></script>
  <!-- [if lte IE 9]><script src="https://cdnjs.cloudflare.com/ajax/libs/placeholders/3.0.2/placeholders.min.js"></script><![endif] -->
</body>

1 Ответ

0 голосов
/ 05 января 2019

Вам нужно поместить код средства просмотра в файл default / register.html вместо register.html. Тогда это работает для меня. Вы можете увидеть результирующую запись в базе данных.

...