Как перенаправить файл, который я скачал с помощью urllib.request, чтобы пользователь мог просмотреть его в приложении фляги? - PullRequest
1 голос
/ 10 октября 2019

По сути, я пытаюсь создать веб-сайт фляги, который как бы "туннелирует" веб-сайт через приложение фляги, загружая 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...