在烧瓶上执行py脚本的问题

时间:2020-03-01 07:24:52

标签: python html python-3.x function flask

感谢您的关注!

我用烧瓶执行.py脚本时遇到问题。 当我在调用中以“ def”形式进行所有操作时,我可以将带有dict的值直接返回烧瓶,然后返回HTML页面。但是,当我在自己的命令中使用多个“ def”时,我就没有“ None”了。对不起,我的英语不好:)

routes.py

import calc_ttv as ct

...

@app.route('/calculate', methods=['GET', 'POST'])
@login_required
def calculate():
    undertitle = 'online web app'
    date_var = request.form['datepicker-input-line']
    if date_var == '':
        flash('Use calendar first!')
        return render_template('calculate_interface.html', undertitle=undertitle)
    time_var = request.form['timepicker-input-line']
    gender_var = request.form['gender-input-line']
    suntime_var = request.form['timepicker-sunrise-input-line']
    naksh_var = request.form['nakshatra-input-line']
    fday = date_var[0:2]
    fmonth = date_var[3:5]
    fyear = date_var[6:10]
    fhour = time_var[0:2]
    fminute = time_var[3:5]
    if gender_var == 'Male':
        fgender = 1
    else:
        fgender = 2
    fnakshatra = naksh_var
    fsunhour = suntime_var[0:2]
    fsunminute = suntime_var[3:5]
    result = ct.ctmainclass.calculateDate(fday, fmonth, fyear, fhour, fminute, fgender, fnakshatra,
                                          fsunhour, fsunminute)
    flash(result)
    return render_template('calculate_interface.html', undertitle=undertitle, date_var=date_var, 
                            time_var=time_var, gender_var=gender_var, suntime_var=suntime_var,
                            naksh_var=naksh_var, result=result)

calc_ttv.py

class ctmainclass(object):

    def calculateDate(fday, fmonth, fyear, fhour, fminute, fgender, fnakshatra, fsunhour, fsunminute):

        global val1
        global val2
        global val3
        global val4
        global val5
        global val6
        global val7
        global val8

        val1 = int(fday)
        val2 = int(fmonth)
        val3 = int(fyear)
        val4 = int(fhour)
        val5 = int(fgender)
        val6 = str(fnakshatra)
        val7 = int(fsunhour)
        val8 = int(fsunminute)

        cttvcl = ctmainclass()

        cttvcl.calculateTime()

    def calculateTime(self):

        global val1
        global val2
        global val3
        global val4
        global val5
        global val6
        global val7
        global val8

        output_text_1 = str('fday: ' + str(val1))
        output_text_2 = str('fmonth: ' + str(val2))
        output_text_3 = str('fyear: ' + str(val3))
        output_text_4 = str('Some text')
        output_text_5 = int(279/63)

        return {'output_var1': output_text_1, 'output_var2': output_text_2,'output_var3': output_text_3,
                'output_var4': output_text_4,
                'output_var5': output_text_5}

calculate_interface.html

{% extends "base.html" %}

{% block content %}
<div class="container">
    {% with messages = get_flashed_messages() %}
    {% if messages %}
    <ul class=flashes>
    {% for message in messages %}
    <li><span style='color: red;'>{{ message }}</span></li>
    {% endfor %}
    </ul>
    {% endif %}
    {% endwith %}
    <h1>MY APP WEB EDITION</h1>
    {% if undertitle %}
    <div class="obj-margin-bottom-for-undertitle-var3">
    <span class="obj-undertitle-span">{{ undertitle }}</span>
    </div>
    {% endif %}
    <div class='col-lg-3 text-center'>
        <form action="/calculate" method="POST">
            <input name='datepicker-input-line' id='datepicker-input-line' type='text'
                         class='datepicker-here obj-picker-line-input form-control'/>
            <input name='timepicker-input-line' class="time obj-picker-line-input form-control"
                         type="text" value="07:30" />
            <select name='gender-input-line' class="obj-picker-line-input form-control"
                          id="gender-input-line">
              <option>Male</option>
              <option>Female</option>
            </select>
            <input name='timepicker-sunrise-input-line' class="time obj-picker-line-input form-control"
                         type="text" value="06:45" />
            <select name='nakshatra-input-line' class="obj-picker-line-input form-control"
                          id="nakshatra-input-line">
              <option>Ashvini</option>
              <option>Bharni</option>
              <option>Krittika</option>
              <option>Rohini</option>
              <option>Mrigashira</option>
            </select>
            <button type="submit" class="btn btn-primary btn-block obj-btn-for-calculate">
             Make some calculations</button>
        </form>
    </div>
    <div class='col-lg-9 text-center'>
        {% if date_var %}
        <div class="obj-undertitle-span">{{ date_var }}</div>
        <div class="obj-undertitle-span">{{ time_var }}</div>
        <div class="obj-undertitle-span">{{ gender_var }}</div>
        <div class="obj-undertitle-span">{{ suntime_var }}</div>
        <div class="obj-undertitle-span">{{ naksh_var }}</div>
        {% endif %}
        <div class="obj-undertitle-span">
        {% if result %}
            {% for obj in result.keys() %}
                {{ result[obj] }}
            {% endfor %}
        {% endif %}
        </div>
    </div>
</div>
{% endblock %}

这就是我所拥有的:

And this is what I've got after all:

1 个答案:

答案 0 :(得分:1)

函数calculateDate没有返回语句,因此函数result中的calculate变量(在routes.py中)始终为。 / p>

修改calc_ttv.py中的calculateDate以返回您的计算结果:

return cttvcl.calculateTime()