は私がローカルで実行しているウェブアプリのこのスクリーンショットを見てみてください間違ったエントリを表示するエラーメッセージを取得する:ユーザー登録フォーム - だけ
ご想像の通り、何をI私がやろうとしているのは、ユーザーが困ったときにエラーメッセージを作成することです。 - それは、ない3〜20文字のある、スペース文字が含まれているおよび/または
- ユーザーが
- ユーザ名が無効であるユーザ名を入力しません:エラー・メッセージをトリガするための5つのパラメータがあります。 0〜9の文字が含まれています
- パスワードは無効です - 3〜20文字ではありません
- パスワードが一致しません - パスワードの確認'は「パスワード」と同じではありません
- 電子メールが無効です -
(r'^[\S][email protected][\S]+\.[\]+$')
と一致する必要があります。 ers、@記号、文字の束、期間、および文字の束。
ご覧のとおり、私のコードでは、ユーザーが「送信」をクリックした後ではなく、ページが読み込まれたときにエラーメッセージが表示されています。
here(私のホスティングサービス、HostGatorはWebApp2をサポートしていないため、Google Cloudにリポジトリをアップロードできませんでした)の理由で、このWebアプリケーションをWebサイトでホストできませんでした。
これらのファイルを(おそらくGoogle App Engine経由で)ローカルでテストする必要があります。私はフレームワークを使用することはできませんよ除い
https://github.com/user3546086/user-signup
#!/usr/bin/env python
#
# Copyright 2007 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import webapp2
import cgi
def Build_Page(textarea_content):
form = """
<table>
<tr>
<td>
<label>{0}</label>
</td>
<td>
<label>Username: <input type="text" name="username"/></label>
</td></tr>
<tr>
<td>
<label>{1}</label>
</td>
<td>
<label>Password: <input type="text" name="password"/></label>
</td></tr>
<tr>
<td>
<label>{2}</label>
</td>
<td>
<label>Verify Password: <input type="text" name="verify_password"/>
</label>
</td></tr>
<tr>
<td>
<label>{3}</label>
</td>
<td>
<label>Email (optional): <input type="text" name="email"/></label>
</td></tr>
</table>
"""
submit = "<input type = 'submit'/>"
form2 = ("<form method='post'>"
+ form + submit + "</form>").format("Please enter a valid
username", "Please enter a valid password", "Your passwords must
match", "Please enter a valid email")
header = "<h1>User Signup</h1>"
return header + form2
class MainHandler(webapp2.RequestHandler):
def get(self):
content = Build_Page("")
self.response.write(content)
def post(self):
# look inside the request to figure out what the user typed
username = self.request.get("username")
password = self.request.get("password")
verify_password = self.request.get("verify_password")
email = self.request.get("email")
# if the user typed nothing at all, redirect
if (not username) or (username.strip() == ""):
error = "Please enter a valid username."
self.response.write(error)
self.redirect("/?error=" + cgi.escape(error, quote=True))
if (not password) or (username.strip() == ""):
error = "Please enter a username."
self.response.write(error)
self.redirect("/?error=" + cgi.escape(error, quote=True))
"""if (not username) or (username.strip() == ""):
error = "Please enter a username."
self.response.write(error)
self.redirect("/?error=" + cgi.escape(error, quote=True))
if (not username) or (username.strip() == ""):
error = "Please enter a username."
self.response.write(error)
self.redirect("/?error=" + cgi.escape(error, quote=True))"""
# self.write.form2
#message = self.request.get("message")
# hello</textarea>hello
#rotation = int(self.request.get("rotation"))
# 0
#encrypted_message = caesar.encrypt(message, rotation)
# hello</textarea>hello
#escaped_message = cgi.escape(encrypted_message)
# hello</textarea>hello
#content = build_page(escaped_message)
#self.response.write(content)
#originalform = form.format("","","","","","")
#page footer
#class TestHandler(webapp2.RequestHandler):
# """ Handles requests coming in to '/add'
# e.g. www.user-signup.com/add
# """
# def get(self):
app = webapp2.WSGIApplication([
('/', MainHandler),
#('/', TestHandler)
], debug=True)
はまたここで、いわゆる溶液でビデオだ:ここでは、ファイル、main.pyのための私のGitHubリポジトリへのリンクとコードです彼がこのプロジェクトに使っているように。
https://www.youtube.com/watch?v=wHtUNPslte4
私は彼が私のMainHandlerクラス内のポスト機能で行ったように「のparams」変数を作成しようとしましたが、何も起こりません。だから私のMainHandlerクラスは次のようになります:
class MainHandler(webapp2.RequestHandler):
def get(self):
content = Build_Page("")
self.response.write(content)
def post(self):
# look inside the request to figure out what the user typed
have_error = False
username = self.request.get("username")
password = self.request.get("password")
verify_password = self.request.get("verify_password")
email = self.request.get("email")
params = dict(username = username,
email = email)
# if the user typed nothing at all, redirect
if (not username) or (username.strip() == ""):
#error = "Please enter a valid username."
#self.response.write(error)
#self.redirect("/?error=" + cgi.escape(error, quote=True))
params['error_username'] = "Please enter a valid username."
have_error = True
if (not password) or (password.strip() == ""):
#error = "Please enter a username."
#self.response.write(error)
#self.redirect("/?error=" + cgi.escape(error, quote=True))
params['error_password'] = "Please enter a valid password."
have_error = True
if have_error:
self.render('signup-form.html', **params)
else:
self.redirect('/unit2/welcome?username=' + username)
そしてコード内の他のものはすべて同じように見えます。私が指定したと思ったように、パラメタが満たされていないときにエラーメッセージが表示されない理由を確かめてください。できる場合はお手伝いください、ありがとうございます。