google 应用引擎上的联系表

contact form on google app engine

我在 google 应用引擎上有一个 运行ning 网站,我想包含一个联系表。 我的 app.yaml 看起来像这样:

version: 1  
runtime: python27 
api_version: 1 
threadsafe: true

 handlers:
 - url: /      
   static_files: www/index.html
   upload: www/index.html

 - url: /(.*)      
   static_files: www/
   upload: www/(.*)

这对于静态文件工作正常,但我如何为联系表单包含 py 文件?

我已经尝试 运行 使用这个 app.yaml 文件:

version: 1  
runtime: python27 
api_version: 1 
threadsafe: true

libraries:
 - name: jinja2 
   version: latest

 - name: webapp2  
   version: latest

 handlers:
 - url: /      
   static_files: www/index.html
   upload: www/index.html

 - url: /(.*)      
   static_files: www/
   upload: www/(.*)

 - url: /.*   
   script: www/contactForm.app

但是没有用,电子邮件没有发送 我的 py 文件如下所示:

import webapp2
import jinja2
import os
from google.appengine.api import mail

jinja_environment = jinja2.Environment(autoescape=True,loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'templates')))

class contact(webapp2.RequestHandler):
template = jinja_environment.get_template('contact.html')
def get(self):
self.response.out.write(self.template.render())
def post(self):

# takes input from user
vorname=self.request.get("vorname")
...

message=mail.EmailMessage(sender="authorized sender address",subject="Kontaktformular")

if not mail.is_email_valid(userMail):
  self.response.out.write("Wrong email! Check again!")

message.to="..."
message.body=""" Hallo:
     Vorname: %s
     ...
     Text: %s""" %(vorname,...,text)
message.send()
self.response.out.write("Message sent!")

app = webapp2.WSGIApplication([('/contact',contact)], debug=True)

有人知道如何让它工作吗?

您的联系表单处理程序没有被命中,因为您在它之前有一个包罗万象的规则。此外,您的联系表单处理程序需要它自己的 URL 而不是它也有一个包罗万象的模式。试试这个:

version: 1  
runtime: python27 
api_version: 1 
threadsafe: true

libraries:
- name: jinja2 
  version: latest

- name: webapp2  
  version: latest

handlers:
- url: /      
  static_files: www/index.html
  upload: www/index.html

- url: /contact  
  script: www/contactForm.app

- url: /(.*)      
  static_files: www/
  upload: www/(.*)

此外,由于缺少 tabs/spaces 代码缩进,您的 Python 似乎无效。应该更像:

import webapp2
import jinja2
import os
from google.appengine.api import mail

jinja_environment = jinja2.Environment(autoescape=True,
                                       loader=jinja2.FileSystemLoader(
                                       os.path.join(os.path.dirname(__file__),
                                                    'templates')))

class contact(webapp2.RequestHandler):
  def get(self):
    template = jinja_environment.get_template('contact.html')
    self.response.out.write(self.template.render())

  def post(self):

    # takes input from user
    vorname=self.request.get("vorname")
    # ...

    if not mail.is_email_valid(userMail):
      self.response.out.write("Wrong email! Check again!")

    message=mail.EmailMessage(sender="authorized sender address",
                              subject="Kontaktformular")

    message.to="..."
    message.body=""" Hallo:
    Vorname: %s
    ...
    Text: %s""" %(vorname,...,text)
    message.send()

    self.response.out.write("Message sent!")

app = webapp2.WSGIApplication([('/contact',contact)], debug=True)