如何分离flask app.route事件的顺序



我有一个小程序,当点击html页面上的按钮时,它会打开outlook电子邮件。问题是,我不知道我的app.route对象的顺序和从我的html页面发布的数据。

My html (openemailJS.html):

my flask app:

import win32com.client
from flask import Flask, render_template, jsonify, json, url_for, request, redirect
import pythoncom, time, os, sys
app = Flask(__name__)
@app.route('/',methods = ['POST', 'GET'])
def index():
if request.method == 'POST':
emailid = request.args.get('nm')
time.sleep(1)
pythoncom.CoInitialize()
outlook = win32com.client.dynamic.Dispatch("Outlook.Application").GetNameSpace('MAPI')
inbox = outlook.GetDefaultFolder(6)
sentbox = outlook.GetDefaultFolder(5)
all_sentbox = sentbox.Items
all_inbox = inbox.Items
tryopen = outlook.GetItemFromID(emailid)
tryopen.display()
return render_template('openemailJS.html')
print(emailid)
else:
time.sleep(1)
emailid = request.args.get('nm')
#emailid = request.form.get('nm')
time.sleep(1)
pythoncom.CoInitialize()
outlook = win32com.client.dynamic.Dispatch("Outlook.Application").GetNameSpace('MAPI')
inbox = outlook.GetDefaultFolder(6)
sentbox = outlook.GetDefaultFolder(5)
all_sentbox = sentbox.Items
all_inbox = inbox.Items
tryopen = outlook.GetItemFromID(emailid)
tryopen.display()
print(user)
return render_template('openemailJS.html')

我想我需要分开' return render_template('openemailJS.html')到它自己的app.route('/something here/'),但我不知道怎么做。

目前,当我运行它时,emailid不会在def index():运行之前发布,导致'parameter not found'应该在哪里。如果我注释掉除了'return render_template'之外的所有内容,运行程序,然后取消注释并单击按钮,那么它就会按原样发布。

我添加了一个if语句,以便仅在发布表单时检索数据。我仍然认为在做任何事情之前先渲染模板是有意义的,但我不知道。

相关内容

最新更新