0

Google Apps Engine、Python でサイトをホストしており、簡単な連絡フォームを処理しようとしています。

ここに私のHTMLがあります:

<form method="post" action="/email" id="contactForm">  
    <h2>Let's get in touch!</h2>
    Name:<br/>
    <input size=35 name="name" placeholder="Feature coming soon!"><br/>
    Email:<br/>
    <input size=35 name="email" placeholder="Feature coming soon!"><br/>
    Subject:<br/>
    <input size=35 name="subject" placeholder="Feature coming soon!"><br/>
    Message:<br/>
    <textarea name="message" rows=15 cols=50 placeholder="Feature coming soon!"></textarea><br/>
    <input type="submit" name="send" value="Submit">
</form>

私の app.yaml で:

  • URL: /email
    スクリプト: email.py

そして、ここに私のemail.pyがあります:

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.api import mail

class SendEmail(webapp.RequestHandler):
    def post(self):
        name = self.request.post("name")
        email = self.request.post("email")
        tempSubject = self.request.post("subject")
        msg = self.request.post("body")

        if name is None:
            self.response.out.write("Error: You did not enter a name.")
        elif email is None:
            self.response.out.write("Error: You did not enter an email.")
        elif tempSubject is None:
            self.response.out.write("Error: You did not enter a subject.")
        elif msg is None:
            self.response.out.write("Error: You did not enter a message.")
        else:
            _subject = "Msg from: " + name + "Re: " + tempSubject

            message = mail.EmailMessage(sender = "alexyoung1992@alexyoung.us", to = "alexyoung1992@gmail.com", subject = _subject, body = msg, reply_to = email)
            message.send()

application = webapp.WSGIApplication([('/email', SendEmail)], debug=True)
run_wsgi_app(application)
self.redirect('/')

500 サーバー エラーが発生します。

エラー: サーバー エラー

サーバーでエラーが発生したため、リクエストを完了できませんでした。問題が解決しない場合は、問題を報告し、このエラー メッセージとその原因となったクエリをお知らせください。

編集: Python スクリプトを更新し、ローカル マシンですべてをデバッグしました。すべてがスムーズに実行されますが、サーバーで実行しようとすると同じエラーが発生します。また、スクリプトを自分で実行してみて、何か違う結果が得られるかどうかを確認することもできます。

4

2 に答える 2

2

Python は && ではなく「and」を使用します Name != None && Email != None

ローカル環境でデバッグする方がはるかに簡単です。エラーのトラックバックを表示します。

于 2013-02-07T06:22:54.383 に答える
0

結局のところ、一部の場所でスペースを使用してインデントし、他の場所でタブを使用したため、サーバーは私の変数の一部を認識していませんでした。最終的なコードは次のとおりです。

import cgi
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.api import mail

class SendEmail(webapp.RequestHandler):
    def post(self):
        name = self.request.get('name', '')
        email = self.request.get('email', '')
        tempSubject = self.request.get('subject', '')
        msg = self.request.get('message', '')

        if name is None:
            self.response.out.write("Error: You did not enter a name.")
        elif email is None:
            self.response.out.write("Error: You did not enter an email.")
        elif tempSubject is None:
            self.response.out.write("Error: You did not enter a subject.")
        elif msg is None:
            self.response.out.write("Error: You did not enter a message.")
        else:
            _subject = "Message from: " + name + ", Re: " + tempSubject
            msg += "\n\nI can be reached at "
            msg += email

            message = mail.EmailMessage(sender = "foo@bar.com", to = "bar@foo.com")
            message.subject = _subject
            message.body = msg
            message.send()

            self.redirect('/')

def runApp():
    application = webapp.WSGIApplication([('/email', SendEmail)], debug=True)
    run_wsgi_app(application)

if __name__ == '__main__':
    runApp()
于 2013-02-10T23:11:03.900 に答える