Djangoでアプリ開発を行っているのですが、フォームなどからボタンを押した時に、プログラムの処理が行われ、次の画面に遷移する流れの中で、プログラムの処理が行われている間にローディング画面を表示したいと考えています。
こちらは、javascriptやCSSで作成されるものだと思うのですが、プログラムを読み込んでいる間のみローディング画面を表示するというのはどのようにすれば良いかが分かりません。
どなたかご助言頂けましたら幸いです
追記
以下は、index.htmlです
{% load static %} <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="ie=edge"/> <link rel="stylesheet" type="text/css" href="{% static 'polls/css/style.css' %}"> <title>demo</title> </head> <body> <div class="loader hidden" id="loading">Loading...</div> <form id="form" action="{% url 'polls:check' %}" method="post"> {% csrf_token %} <input type="url" name="check_url" placeholder="http://example.com"/> <button type="button" onclick="sendData()">送信</button> </form> <script src="{% static 'polls/js/app.js' %}"></script> </body> </html>
以下は、views.pyです
def check(request): input_url = request.POST['check_url'] test_data = {'test':'sssss','test2':'aaaaaaa'} print('ok') return render(request,'polls/check.html',{'test_data': test_data})
以下はcheck.htmlです
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <p>check.htmlです</p> </body> </html>
以下は、app.jsです
function showElement(e) { e.classList.remove("hidden"); } function hideElement(e) { e.classList.add("hidden"); } async function sendData() { // ローディング画面を表示する showElement(document.getElementById("loading")); //formデータを取得 let formElem = document.getElementById("form") console.log(formElem) let formUrl = formElem.action; let formData = new FormData(formElem); // console.log(formData) let response = await fetch(formUrl, { method: 'POST', body: formData }); // ローディング画面を隠します hideElement(document.getElementById("loading")); if(response.ok){ //成功の場合の処理 // console.log(response) document.open(); document.write(await response.text()); document.close(); // 前のページへ正しく戻れるようページ歴史に追加する history.pushState(null, "", "/polls/check"); }else{ //失敗の場合の処理 } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/28 12:15 編集
2020/06/29 11:21
2020/06/30 13:23
2020/07/01 02:50 編集
2020/07/01 02:49
2020/07/01 02:55
2020/07/01 02:57
2020/07/01 03:18
2020/07/01 04:01 編集
2020/07/01 04:11
2020/07/01 04:51
2020/07/01 05:09
2020/07/01 05:24 編集
2020/07/01 05:24 編集
2020/07/01 05:38
2020/07/01 06:01
2020/07/01 13:03 編集
2020/07/01 10:33
2020/07/01 11:08
2020/07/01 11:44