use*_*038 17 python global-variables flask
我想要做的只是从一个API显示第一个.该变量称为"firstevent",该值应显示在网页上.但是firstevent在def中,所以我把它改成一个全局变量,并希望它可以用于不同的函数.但它显示"NameError:全局名称'firstevent'未定义".这就是我在做的事情:
定义一个全局变量
global firstevent
Run Code Online (Sandbox Code Playgroud)
发送此变量一个随机值,它应该是 events['items'][1]['end']
firstevent = 1
Run Code Online (Sandbox Code Playgroud)
在网站上显示firstevent的价值.
@app.route("/")
def index():
return 'User %s' % firstevent
Run Code Online (Sandbox Code Playgroud)
我不确定现在发生了什么,也许这是一个范围问题?我在网上查了很多答案,但仍无法找到解决方案.
以下是详细信息(不是整个代码)
import os
# Retrieve Flask, our framework
# request module gives access to incoming request data
import argparse
import httplib2
import os
import sys
import json
from flask import Flask, request
from apiclient import discovery
from oauth2client import file
from oauth2client import client
from oauth2client import tools
from apiclient.discovery import build
from oauth2client.client import OAuth2WebServerFlow
import httplib2
global firstevent
app = Flask(__name__)
def main(argv):
# Parse the command-line flags.
flags = parser.parse_args(argv[1:])
# If the credentials don't exist or are invalid run through the native client
# flow. The Storage object will ensure that if successful the good
# credentials will get written back to the file.
storage = file.Storage('sample.dat')
credentials = storage.get()
if credentials is None or credentials.invalid:
credentials = tools.run_flow(FLOW, storage, flags)
# Create an httplib2.Http object to handle our HTTP requests and authorize it
# with our good Credentials.
http = httplib2.Http()
http = credentials.authorize(http)
# Construct the service object for the interacting with the Calendar API.
calendar = discovery.build('calendar', 'v3', http=http)
created_event = calendar.events().quickAdd(calendarId='XXXX@gmail.com', text='Appointment at Somewhere on June 3rd 10am-10:25am').execute()
events = calendar.events().list(calendarId='XXXX@gmail.com').execute()
#firstevent = events['items'][1]['end']
firstevent = 1
#print events['items'][1]['end']
# Main Page Route
@app.route("/")
def index():
return 'User %s' % firstevent
# Second Page Route
@app.route("/page2")
def page2():
return """<html><body>
<h2>Welcome to page 2</h2>
<p>This is just amazing!</p>
</body></html>"""
# start the webserver
if __name__ == "__main__":
app.debug = True
app.run()
Run Code Online (Sandbox Code Playgroud)
aIK*_*Kid 24
是的,这是一个范围问题.在main()函数的开头,添加以下内容:
global firstevent
Run Code Online (Sandbox Code Playgroud)
应该这样做.任何未在函数内定义的变量都是全局变量.您可以从任何功能直接访问它.但是,要修改您需要global var在函数中编写的变量.
例
这会在函数上创建一个局部变量"firstevent":
firstevent = 0
def modify():
firstevent = 1
Run Code Online (Sandbox Code Playgroud)
这会修改全局变量'firstevent'
firstevent = 0
def modify():
global firstevent
firstevent = 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37957 次 |
| 最近记录: |