appengine / Django отправить форму с использованием классов - PullRequest
0 голосов
/ 12 февраля 2020

Я хотел бы создать регистрацию от и пытался следовать официальной документации (https://cloud.google.com/appengine/docs/standard/python/getting-started/python-standard-env).

Сейчас все, что я хотел бы сделать, это отобразить форму данные на другой маршрут, но я получаю следующую ошибку:

  File "/usr/lib/google-cloud-sdk/platform/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1529, in __call__
    rv = self.router.dispatch(request, response)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1278, in default_dispatcher
    return route.handler_adapter(request, response)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1102, in __call__
    return handler.dispatch()
  File "/home/vicktree/Desktop/noah/web/noahs-app/handlers/noah_handler.py", line 329, in dispatch
    super(NoahSiteHandler, self).dispatch()
  File "/home/vicktree/Desktop/noah/web/noahs-app/handlers/noah_handler.py", line 130, in dispatch
    webapp2.RequestHandler.dispatch(self)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 572, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 570, in dispatch
    return method(*args, **kwargs)
  File "/home/vicktree/Desktop/noah/web/noahs-app/handlers/site_handlers.py", line 1071, in post
    user_name = self.request.form['user_name']
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/lib/webob-1.1.1/webob/request.py", line 1238, in __getattr__
    raise AttributeError(attr)
AttributeError: form

Мои маршруты следующие:

   #Sign-in registration
    Route(r'/signin/registration', 'handlers.site_handlers.UserRegistration', name='registration'),

    #Sign-in Noah registration submit
    Route(r'/signin/submitted', 'handlers.site_handlers.UserRegistrationSubmit', name='registration_submit'),

Мой класс Logi c ниже:

class UserRegistrationSubmit(SiteHandler):

    template_filename = 'registration_submit.html'

    def post(self):
        user_name = self.request.form['user_name']
        password = self.request.form['password']
        self.render_template(values={'user_name':user_name, 'password':password})

Класс UserRegistration (SiteHandler):

    # email = request.form['email']

    template_filename = 'registration.html'

    def get(self):
        self.render_template()

Мой HTML шаблон ниже:

   /registration.html
    <div class="alpha-content grid-line">
    <head>
        <title>Submit a form</title>
       <link rel="stylesheet" type="text/css" href="/static/style.css">
      </head>
      <body>
        <div id="container">
          <div class="pagetitle">
            <h1>Submit a form</h1>
          </div>
          <div id="main">
            <form method="post" action="{{ url_for('registration_submit') }}">
              <label for="user_name">Username:</label>
              <input type="text" name="name"><br />
              <label for="password">Password:</label>
              <input type="password" name="password"><br />
              <input type="submit">
            </form>
          </div>
        </div>


        <div class="veneer"></div>
    </div>

   /registration_submit.html
    <html>
     <head>
       <title>Submitted form</title>
     </head>
     <body>
       <div id="container">
         <div class="pagetitle">
           <h1>Form submitted</h1>
         </div>
         <div id="main">
           <p>Thanks for your submission!</p>
           <p>Here's a review of the information that you sent:</p>
           <p>
              <strong>Name</strong>: {{user_name}} <br>
              <strong>Password</strong>: {{password}} <br>
           </p>
         </div>
       </div>
     </body>
    </html>

1 Ответ

1 голос
/ 12 февраля 2020

Я подозреваю, что вы определяете атрибут name как "name" в вашей форме:

<input type="text" name="name"><br />

Затем попробуйте получить к нему доступ как user_name в логи c:

user_name = self.request.form['user_name']

Таким образом, вы получаете AttributeError

Оба должны совпадать, поэтому для ясности вы можете сделать что-то вроде:

<input type="text" name="user_name"><br />

user_name = self.request.form['user_name']
...