По сути, я пытаюсь создать веб-сайт фляги, который как бы "туннелирует" веб-сайт через приложение фляги, загружая HTML-страницу с помощью urllib.request, но когда я пытаюсь перенаправить на страницу, он простоперенаправляет в / None и не загруженный файл. Я просто пытаюсь выяснить, где ошибка, которая вызывает ссылку None.
index.html
<!DOCTYPE html>
<html>
<head>
<title>Web Tunneller</title>
</head>
<body>
<form method="POST" action="/go">
<p3 style="text-align:center;">Website to tunnel</p3><input name="urlfield"style="text-align:center;"type="text"></input>
<input type="submit"></input>
</form>
</body>
</html>
main.py
from flask import Flask, render_template, redirect, url_for, flash, request
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
import urllib.request
import os
url = "" # global variable for the url
class Config(object):
SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess'
app = Flask(__name__)
app.config.from_object(Config)
class LoginForm(FlaskForm):
url_field = StringField('url:', validators=[DataRequired()])
submit = SubmitField('Load')
# Function that downloads the html file given a url
def download(url_to_download):
try:
response = urllib.request.urlopen(url_to_download)
webContent = response.read()
f = open(url_to_download, 'w')
f.write(webContent)
f.close()
return redirect(filename=f) # This was the previous code that was used
except:
flash("Error")
@app.route('/', methods=['GET', 'POST'])
def home():
"""
form = LoginForm()
if form.validate_on_submit():
url = form.url_field.data
flash(url) # Testing if the form works
# Do something with the url, probably download it
f = download(url)
return redirect(f)
"""
return render_template('index.html')
@app.route('/go', methods=['POST'])
def go():
url = request.form['urlfield']
r = download(url)
return redirect(r)
if __name__ == "__main__":
app.run(debug=True, port=8080)