#jquery
Вопрос:
Это веб-страница, на которой отображается индикатор выполнения. В настоящее время панель программ запущена, но она не переходит на следующую страницу.
Я получаю эту ошибку:
внутренняя ошибка сервера
Сервер обнаружил внутреннюю ошибку и не смог выполнить ваш запрос. Либо сервер перегружен, либо в приложении произошла ошибка.
Я искал это сообщение об ошибке, но правильного решения нет.
Что — то пошло не так?
from flask import Flask, render_template, request
from maratang import search
app = Flask(__name__)
@app.route('/')
def test():
return render_template('post.html')
@app.route('/progress', methods=['POST', 'GET'])
def loding():
global result, path
if request.method == 'POST':
path = request.form['path']
result = request.form
return render_template('progress.html')
@app.route('/list', methods=['POST'])
def post():
if request.method == 'POST':
list,error = search(path)
print(list)
return render_template("result.html", result = result, list = list, error = error)
if __name__ == '__main__':
app.run()
Это мой код колбы.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Post</title>
</head>
<body>
<body>
<form action="http://127.0.0.1:5000/progress" method="POST">
<p>id : <input type="text" name="ID" ></p>
<p>path : <input type="text" name="path" id="path"></p>
<p><input type="submit" value="Run"></p>
</form>
</body>
</html>
Это то, что появляется на моей первой странице.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Changing the Value of Bootstrap 4 Progress Bar Dynamically</title>
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js">
</script>
<style>
.bs-example{
margin: 20px;
}
</style>
</head>
<body>
<div class="bs-example">
<!-- Progress bar HTML -->
<div class="progress">
<div class="progress-bar progress-bar-striped" style="min-width: 20px;"></div>
</div>
<form action="/list" method="POST">
<input type="hidden" name="ID" value="">
<input type="hidden" name="path" value="{{path}}">
</form>
<!-- jQuery Script -->
<script>
var i = 0;
function makeProgress(){
if(i < 100){
i = i 10;
$(".progress-bar").css("width", i "%").text(i " %");
setTimeout("makeProgress()", 100);
}
// Wait for sometime before running this script again
else { document.forms[0].submit(); }
};
<!-- $.ajax({-->
<!-- type:'post',-->
<!-- async:'true',-->
<!-- url:'http://127.0.0.1:5000/ ',-->
<!-- data:{path},-->
<!-- dataType: 'json',-->
<!-- complete:function(data,textStatus) {-->
<!-- location.href='/list'-->
<!-- }-->
<!--});-->
makeProgress()
</script>
</div>
</body>
</html>
Комментарии:
1. Если вы отправите форму. страница перезагружается
Ответ №1:
Я решил ее сам.
from flask import Flask, render_template, request
from maratang import search #마라탕으로부터 불러와서 서치함수를 임포트 하겟다.
app = Flask(__name__)
@app.route('/')
def test():
return render_template('post.html')
@app.route('/progress', methods=['POST', 'GET'])
def loding():
global result, path, list, error
if request.method == 'POST':
result = request.form #임의로 입력한 ID 및 경로를 result.html로 전송하기 위한 변수
path = request.form['path'] #임의로 입력한 경로를 저장한 변수
list, error = search(path)
return render_template('progress.html')
@app.route('/list', methods=['POST'])
def post():
if request.method == 'POST':
print(list)
return render_template("result.html", result = result, list = list, error = error)
if __name__ == '__main__':
app.run()
Объявив переменные глобальными, мы можем использовать их в качестве возвращаемых значений в части результата.
Комментарии:
1. Есть ли более быстрый и лучший способ, чем глобальная декларация??