![](/img/trans.png)
[英]how can i do a return render_template() with different variables for the same page - flask python & html
[英]Flask/Python - How can I run this python script in Flask and render output in html page
我編寫此代碼以獲取一些股票價格值,以及如何在 results.html 頁面中呈現 output 結果? 我正在使用 Heroku 來制作這個應用程序。
請幫助我使用這個應用程序。 這是調用其他文件的主文件。
如果需要更多詳細信息來運行此應用程序,請告訴我。
這是我制作的代碼,用於在 view.html 頁面中顯示 output。 x.py
print('----EURO DO REMESSA ONLINE-----')
import melhor
print('-----COTAÇÃO DOLARHOJE.COM-----')
import cota
print('-----INDICADOR EURO COMERCIAL H1----')
import indicator
print('-----INVESTING VALOR EURO COM-----')
import invest
print( '-------------\n', 'Conhece a ti mesmo. (Tales de Mileto)', '\n-------------')
melhor.py
import requests
from bs4 import BeautifulSoup as bs
import time
import re
from Color import *
url = 'https://www.remessaonline.com.br/cotacao/cotacao-euro'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
page = requests.get(url, headers=headers)
page
page.status_code
page.text
soup = bs(page.text, 'html.parser')
resumo = soup.find_all('div', class_="style__Text-sc-27fg4f-2 ddwOcG")[0].get_text('')
mult = float(re.sub('[^0-9.]', "", resumo.replace(",",".")))
print('Euro COMERCIAL: R$', Base.BOLD, ANSI_Compatible.Color(120), mult, ANSI_Compatible.END, Base.END)
eur_rate = 1.035145
eur_ra = str(mult * eur_rate)[:6]
print('Euro TURISMO: R$', Base.BOLD, eur_ra, Base.END)
current = time.strftime("%Y / dia:%d mês:%m horário:%H:%M:%S")
print(current)
with open('remessa.txt', 'a') as f:
f.writelines('Valor euro turismo:' + 'R$' + eur_ra + ' ' + 'Data:' + current + '\n')
副本
import requests
import time
response = requests.get('http://dolarhoje.com/cotacao.txt')
data = response.text
print('1 USD comercial =',"R$",data )
response = requests.get('http://dolarhoje.com/dolar-turismo/cotacao.txt')
data = response.text
print('1 USD turismo =',"R$",data )
response = requests.get('http://dolarhoje.com/euro/cotacao.txt')
data2 = response.text
print('1 EUR comercial =',"R$",data2 )
response = requests.get('http://dolarhoje.com/euro-turismo/cotacao.txt')
data2 = response.text
print('1 EUR turismo =',"R$",data2 )
response = requests.get('http://dolarhoje.com/bitcoin-hoje/cotacao.txt')
data3 = response.text
print('1 BTC =',"R$",data3 )
current = time.strftime("ano:%Y dia:%d mês:%m horário:%H:%M:%S")
with open('cota.txt', 'a') as f:
f.writelines('Valor euro turismo:' + 'R$' + data2 + ' ' + 'Data:' + current + '\n')
指標.py
import requests
from bs4 import BeautifulSoup as bs
url = 'https://br.investing.com/currencies/eur-brl-technical'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
page = requests.get(url, headers=headers)
page
page.status_code
page.text
soup = bs(page.text, 'html.parser')
resumo = soup.find_all(id='techStudiesInnerWrap')[0].get_text(' ')
print(resumo)
投資.py
import requests
from bs4 import BeautifulSoup as bs
url = 'https://br.investing.com/currencies/eur-brl-technical'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
page = requests.get(url, headers=headers)
page
page.status_code
page.text
soup = bs(page.text, 'html.parser')
resumo = soup.find_all('div', class_="top bold inlineblock")[0].get_text(' ')
print(resumo)
感謝您的關注。
希望對大家有所幫助,對Python了解不多。 但聽起來如果您正在對 html 頁面進行服務器端渲染,您只需要一個模板引擎,例如 Jade、Pug 或類似的東西。
以下是一些示例供您參考:
https://www.grizzlypeaksoftware.com/articles?id=1m3W3llyJLy4YS5OpyyxBq
https://scotch.io/tutorials/getting-started-with-flask-a-python-microframework
https://scoutapm.com/blog/python-flask-tutorial-getting-started-with-flask
https://www.liquidweb.com/kb/getting-started-with-flask/
https://github.com/akibrhast/flask_base_template
基本上你需要了解的是如何創建一個后端服務器。 在這種情況下使用 flask。 通常與 flask 一起使用的模板引擎稱為 Jinja。 一旦您對您的數據發出請求調用,您就會希望通過 jinja 將其傳遞給您的路線。
這是一個基本示例:
from flask import Flask, flash, redirect, render_template, request, session, abort,url_for
import os
#from flask_login import login_user, current_user, logout_user, login_required #Optional login imports, need to 'pip install flask_login'
app = Flask(__name__)
@app.route('/')
def index():
return render_template("base.html")
if __name__ == '__main__':
app.secret_key = os.urandom(12)
app.run(debug=True)
我解決了這個問題:這是我找到的解決方案:
首先,您可以在這里訪問應用程序: finance-python.herokuapp.com
應用程序.py
from flask import Flask
from functools import wraps
import sqlite3
import requests
import bs4
import requests_html
from flask import render_template
import subprocess
import re
import flask
from bs4 import BeautifulSoup as bs
import time
app = flask.Flask(__name__)
@app.route("/", methods=['GET', 'POST'])
def index():
url = 'https://www.remessaonline.com.br/cotacao/cotacao-euro'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
page = requests.get(url, headers=headers)
page
page.status_code
page.text
soup = bs(page.text, 'html.parser')
resumo = soup.find_all('div', class_="style__Text-sc-27fg4f-2 ddwOcG")[0].get_text('')
mult = float(re.sub('[^0-9.]', "", resumo.replace(",",".")))
euro_comercial_rem = print('Euro COMERCIAL: R$', mult)
eur_rate = 1.035145
eur_ra = str(mult * eur_rate)[:6]
euro_turismo_rem = print('Euro TURISMO: R$', eur_ra)
current = time.strftime("%Y / dia:%d mês:%m horário:%H:%M:%S")
print(current)
response = requests.get('http://dolarhoje.com/cotacao.txt')
data = response.text
dolar_com_dolar_hoje = print('1 USD comercial =',"R$",data )
response = requests.get('http://dolarhoje.com/dolar-turismo/cotacao.txt')
dataa = response.text
dolar_tur_dolar_hoje = print('1 USD turismo =',"R$",dataa )
response = requests.get('http://dolarhoje.com/euro/cotacao.txt')
data2 = response.text
euro_com_dolar_hoje = print('1 EUR comercial =',"R$",data2 )
response = requests.get('http://dolarhoje.com/euro-turismo/cotacao.txt')
dataa2 = response.text
euro_tur_dolar_hoje = print('1 EUR turismo =',"R$",dataa2 )
response = requests.get('http://dolarhoje.com/bitcoin-hoje/cotacao.txt')
data3 = response.text
btc_dolar_hoje = print('1 BTC =',"R$",data3 )
current = time.strftime("ano:%Y dia:%d mês:%m horário:%H:%M:%S")
url = 'https://br.investing.com/currencies/eur-brl-technical'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
page = requests.get(url, headers=headers)
page
page.status_code
page.text
soup = bs(page.text, 'html.parser')
resumoo = soup.find_all(id='techStudiesInnerWrap')[0].get_text(' ')
resumo_inves = print(resumoo)
url = 'https://br.investing.com/currencies/eur-brl-technical'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
page = requests.get(url, headers=headers)
page
page.status_code
page.text
soup = bs(page.text, 'html.parser')
resumooo = soup.find_all('div', class_="top bold inlineblock")[0].get_text(' ')
resumo_invest_eur_brl = print(resumooo)
#resumos = 'eur_ra' + 'euro_turismo_rem' + 'dolar_com_dolar_hoje' + 'dolar_tur_dolar_hoje' + 'btc_dolar_hoje' + 'resumo_inves' + 'euro_com_dolar_hoje' + 'euro_tur_dolar_hoje'
return flask.render_template('index.html', mult=mult, eur_ra=eur_ra, current=current, data=data, dataa=dataa, data2=data2, dataa2=dataa2, data3=data3, resumoo=resumoo, resumooo=resumooo)
if __name__ == '__main__':
app.run()
index.html 進入模板文件夾
-----EURO DO REMESSA ONLINE----- <br>
EURO COMERCIAL : R$ {{ mult }} <br>
EURO TURISMO: R$ {{ eur_ra }} <br>
{{ current }} <br> <br>
----COTAÇÃO DOLARHOJE.COM----- <br>
1 USD comercial = R$ {{ data }} <br>
1 USD turismo = R$ {{ dataa }} <br>
1 EUR comercial = R$ {{ data2 }} <br>
1 EUR turismo = R$ {{ dataa2 }} <br>
1 BTC = R$ {{ data3 }} <br> <br>
-----INDICADOR EURO COMERCIAL H1----- <br>
{{ resumoo }} <br> <br>
-----VARIAÇÃO DO EURO-----<br>
{{ resumooo }} <br> <br>
Conhece a ti mesmo - Tales de Mileto
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.