【问题标题】:How do I create a page to display the html source code (only) of a website I created from Google Sheets?如何创建一个页面来显示我从 Google 表格创建的网站的 html 源代码(仅)?
【发布时间】:2021-09-09 05:44:25
【问题描述】:

我有一个使用 API 从 Google 表格创建的日历。我想创建另一个页面(路由)来显示日历的 html 代码(不是呈现的模板)。这是我的代码:

from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials
from google.oauth2 import service_account

from flask import Flask
from flask import Flask, flash, jsonify, redirect, render_template, request, url_for, 
session

import requests

app = Flask(__name__)

SERVICE_ACCOUNT_FILE = 'keys.json'
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']

creds = None
creds = service_account.Credentials.from_service_account_file(
     SERVICE_ACCOUNT_FILE, scopes=SCOPES)

# The ID and range of a sample spreadsheet.
SAMPLE_SPREADSHEET_ID = 'removed for security'

service = build('sheets', 'v4', credentials=creds)

# Call the Sheets API
sheet = service.spreadsheets()
result = sheet.values().get(spreadsheetId=SAMPLE_SPREADSHEET_ID,
                            range="new!A2:D9").execute()

header = sheet.values().get(spreadsheetId=SAMPLE_SPREADSHEET_ID,
                            range="new!A1:D1").execute()
                                                                    

request = sheet.values().update(spreadsheetId=SAMPLE_SPREADSHEET_ID, 
         range="new!A10", valueInputOption="USER_ENTERED", body= 
         {"values":newvalues}).execute()


@app.route('/', methods=["GET", "POST"])
def index():
        values = result.get('values', [])
        headers = header.get('values', [])

          return render_template("index.html", values=values, headers=headers)


 @app.route('/text', methods=["GET", "POST"])
 def text():
           t = requests.get('http://127.0.0.1:5000')
           return (t.content)

 if __name__ == '__main__':
 app.run()

“/text”路由显示的页面与“/”页面完全相同。我希望它只返回 html 代码而不是呈现的模板。

【问题讨论】:

  • 我查看了您引用的文档,但我不太确定如何使用它。这是一个单独的函数还是 def text() 函数中的一行?这是否意味着删除 .html 扩展名并将文件名 index.html 作为索引读取?我糊涂了。感谢您的澄清。
  • 你想显示的,和你写在html文件中的代码一样,用jinja语法或用jinja没有jinja语法的代码。

标签: python html api flask google-sheets


【解决方案1】:

尝试使用make_response将响应的mime类型设置为text/plain

from flask import app, make_response, render_template

app = Flask(__name__)

@app.route('/')
def index():
    resp = make_response(render_template('template.html'))
    resp.mimetype = 'text/plain'
    return resp

【讨论】:

  • 它与我正在寻找的内容很接近......但是它没有显示完整的 html,因为它不会遍历电子表格数据。例如在标题标签中它只显示 但页面应该显示 Date Region Tournament 城市
  • 你能告诉我你是如何修改代码的吗?另一方面,如果您想获取所有值,我不明白您为什么调用 'http://127.0.0.1:5000' 而不是使用相同的 index 结构来适应最后几行。
  • 我修改了以下函数,还添加了make_response的导入请求。抱歉,我不知道如何以正确的格式获取代码。 @app.route('/text', methods=["GET", "POST"]) def text(): resp = make_response(render_template('index.html')) resp.mimetype = 'text/plain' return resp
  • 你为什么不用render_template("index.html", values=values, headers=headers)
  • 谢谢!效果很好!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多