【问题标题】:My code isn't giving correct output我的代码没有给出正确的输出
【发布时间】:2017-05-19 06:39:49
【问题描述】:

我想显示一个表单,在输入详细信息后,如果输入的日期、月份和年份有效,则显示谢谢消息,否则再次显示表单,但问题是当我单击提交按钮时,我没有得到任何输出但只有一个空白屏幕。 Post 过程中有一些错误。

import webapp2
form="""
<form method="post">
    When is ur birthday?
    <br>
    <label> Month
        <input type="text" name="month">
    </label>
    <label> Day
        <input type="text" name="day">
    </label>
    <label> Year
        <input type="text" name="year">
    </label>
     <br>
     <br>
     <input type="submit">
</form>
"""

class MainPage(webapp2.RequestHandler):
    months = ['January',
              'February',
              'March',
              'April',
              'May',
              'June',
              'July',
              'August',
              'September',
              'October',
              'November',
              'December']
    def valid_month(month):
        month= month.capitalize()
        if month in months:
            return month
        else:
            return None

    def valid_day(day):
        if day and day.isdigit():
            if int(day) in range(1, 32):
                return int(day)
        return None

    def valid_year(year):
        if year and year.isdigit():
            if int(year) in range (1900, 2021):
                return int(year)
        return None

    def get(self):
        self.response.out.write(form)

    def post(self):
        user_month = valid_month(self.request.get("month"))
        user_day = valid_day(self.request.get("day"))
        user_year = valid_year(self.request.get("year"))
        if not (user_year and user_day and user_month):
            self.response.out.write(form)
        else:
            self.response.out.write("Thanks!")


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

【问题讨论】:

  • 尝试解释“正确”输出的含义。您还应该包含一条错误消息。查看示例代码,它应该只是显示您编写的表单。您期望发生什么?
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误在问题本身中重现它所需的最短代码。没有明确的问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable Example

标签: python python-2.7 google-app-engine webapp2


【解决方案1】:

问题是您没有正确调用检查函数。最简单的解决方法是将业务逻辑放在类之外,例如:

import webapp2

form="""
<form method="post">
    When is ur birthday?
    <br>
    <label> Month
        <input type="text" name="month">
    </label>
    <label> Day
        <input type="text" name="day">
    </label>
    <label> Year
        <input type="text" name="year">
    </label>
     <br>
     <br>
     <input type="submit">
</form>
"""

months = ['January',
          'February',
          'March',
          'April',
          'May',
          'June',
          'July',
          'August',
          'September',
          'October',
          'November',
          'December']

def valid_month(month):
    month= month.capitalize()
    if month in months:
        return month
    else:
        return None

def valid_day(day):
    if day and day.isdigit():
        if int(day) in range(1, 32):
            return int(day)
    return None

def valid_year(year):
    if year and year.isdigit():
        if int(year) in range (1900, 2021):
            return int(year)
    return None


class MainPage(webapp2.RequestHandler):

    def get(self):
        self.response.out.write(form)

    def post(self):
        user_month = valid_month(self.request.get("month"))
        user_day = valid_day(self.request.get("day"))
        user_year = valid_year(self.request.get("year"))
        if not (user_year and user_day and user_month):
            self.response.out.write(form)
        else:
            self.response.out.write("Thanks!")


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

如果您打算在课堂上使用它,那么您将不得不做类似的事情

import webapp2

form="""
<form method="post">
    When is ur birthday?
    <br>
    <label> Month
        <input type="text" name="month">
    </label>
    <label> Day
        <input type="text" name="day">
    </label>
    <label> Year
        <input type="text" name="year">
    </label>
     <br>
     <br>
     <input type="submit">
</form>
"""

class MainPage(webapp2.RequestHandler):

    def valid_month(self, month):
        months = ['January',
              'February',
              'March',
              'April',
              'May',
              'June',
              'July',
              'August',
              'September',
              'October',
              'November',
              'December']

        month= month.capitalize()
        if month in months:
            return month
        else:
            return None

    def valid_day(self, day):
        if day and day.isdigit():
            if int(day) in range(1, 32):
                return int(day)
        return None

    def valid_year(self, year):
        if year and year.isdigit():
            if int(year) in range (1900, 2021):
                return int(year)
        return None

    def get(self):
        self.response.out.write(form)

    def post(self):
        user_month = self.valid_month(self.request.get("month"))
        user_day = self.valid_day(self.request.get("day"))
        user_year = self.valid_year(self.request.get("year"))
        if not (user_year and user_day and user_month):
            self.response.out.write(form)
        else:
            self.response.out.write("Thanks!")


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多