405 Метод не разрешен в flask - PullRequest
0 голосов
/ 24 марта 2020

Итак, я создаю портал входа в систему для загрузки файлов, включая обработку сеансов для каждого сеанса, создавая папку для пользователя и сохраняя файл в этой папке. Я сталкиваюсь с 405 (метод не допускается ошибка, когда я пытаюсь загрузить файлы)

from flask import Flask, redirect, url_for, render_template, request, session,flash
from datetime import timedelta
import subprocess
from werkzeug.utils import secure_filename
import os
import datetime
import urllib.request

app = Flask(__name__,template_folder="Some Template Directory")

app.permanent_session_lifetime = timedelta(minutes=5)
app.secret_key = b'_5#y2L"F4Q8z\n\xec]iasdfffsd/'
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'csv'])

def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS


@app.route('/')
def home(): 
    return render_template('try.html')


@app.route('/login' , methods = ["POST", "GET"])
def login():
    if request.method == "POST":
        session.permanent = True
        user = request.form["name"]
        session["abc"] = user
        parent_dir = "Directory path for creating sub dir for each session"
        global path1
        path1= os.path.join(parent_dir,user)
        os.makedirs(path1)
        return redirect(url_for("user"))


    return render_template('login.html')


@app.route('/user' )
def user():
    if "pawan" in session:
        user = session["abc"]
        return f"<h1>{user}</h1>"'<br>' + \
                "<b><a href = '/upload'> Click here to uploads the files </a></b>"
    else:
         return redirect(url_for("login"))


@app.route('/upload')
def upload_form():
    return render_template('sessionupload.html')

@app.route('/upload', methods=['POST','GET'])
def upload_file():
    if request.method == 'POST':
         if request.files:
            files = request.files.getlist('files[]')
            if files.filename == "":
                flash("No file")
                return redirect(request.url)
            if allowed_file(files.filename):
                abcd = secure_filename(files.filename)
                files.save(os.path.join(path1, abcd))
                flash("file saved")
                return redirect(request.url)
    render_template('sessionupload.html')



@app.route("/logout")
def logout():   
    session.pop("abc", None)#pops out the key value of the session , if the is not present then it will print none
    return redirect(url_for("login"))


if __name__ == "__main__":
        app.run(debug=True)

sessionupload. html:

<!doctype html>
<title>Upload FIles</title>
<h2>Select file(s) to upload</h2>
<p>
    {% with messages = get_flashed_messages() %}
      {% if messages %}
        <ul class=flashes>
        {% for message in messages %}
          <li>{{ message }}</li>
        {% endfor %}
        </ul>
      {% endif %}
    {% endwith %}
</p>
<form method="post" action="/" enctype="multipart/form-data">
    <dl>
        <p>
            <input type="file" name="files[]" multiple="true" autocomplete="off" required>
        </p>
    </dl>
    <p>
        <input type="submit" value="Submit">
    </p>
</form>

Я не могу понять, почему ошибка происходит, я даже включаю GET и POST в маршрут загрузки URL? Любые предложения будут высоко оценены. У меня приближается крайний срок:)

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