În partea anterioară a acestei serii, am implementat funcționalitatea de încărcare a imaginilor pentru utilizatori, adăugând în același timp o dorință. De asemenea, am adaugat cateva optiuni legate de dorinta unui utilizator pe pagina Add Wish. În acest tutorial, vom trece la nivelul următor prin implementarea funcționalității pentru a vă place o anumită dorință.
Să începem prin clonarea părții anterioare a tutorialului de la GitHub.
git clone https://github.com/jay3dec/PythonFlaskMySQLApp_Part6.git
Odată ce codul sursă a fost clonat, navigați la directorul de proiect și porniți serverul web.
cd PythonFlaskMySQLApp_Part6 Python app.py
Punctați browser-ul dvs. la http: // localhost: 5002 / și ar trebui să aveți aplicația să ruleze.
Vom crea o nouă pagină numită tablou de bord
unde vor fi afișate toate dorințele de la diferiți utilizatori. Orice utilizator poate dori sau să comenteze dorințele afișate în tabloul de bord. Așadar, navigați la dosarul Șabloane și creați un fișier numit dashboard.html
. Deschide dashboard.html
și adăugați următorul cod HTML:
Python Cup Bucket List App Python Flask App
Bungee Jumping
vehicula ut id elit.
Bungee Jumping
vehicula ut id elit.
Bungee Jumping
vehicula ut id elit.
Bungee Jumping
vehicula ut id elit.
Bungee Jumping
vehicula ut id elit.
Bungee Jumping
vehicula ut id elit.
Deschide
app.py
și să creeze un nou traseu numit/ showDashboard
. Utilizând acest traseu, vom afișa pagina tabloului de bord.@ app.route ('/ showDashboard') def showDashboard (): întoarcere render_template ('dashboard.html')Modificați
/ validateLogin
pentru a redirecționa utilizatorul la conectarea cu succes la pagina de bord în locul paginii de pornire a utilizatorului.return redirect ('/ showDashboard')Salvați modificările de mai sus și reporniți serverul. Punctați browser-ul dvs. la http: // localhost: 50002 și conectați-vă utilizând o adresă de e-mail și o parolă valide. După ce v-ați conectat, ar trebui să vedeți pagina tabloului de bord.
După cum se vede în imaginea de mai sus, vom afișa toate dorințele create de diferiți utilizatori și vom oferi accesul altor utilizatori pentru a le place.
Populați tabloul de bord
În primul rând, trebuie să preluăm datele din baza de date pentru a popula tabloul de bord. Deci, să creăm o procedură stocată pentru a obține dorințele create de utilizatori.
USE 'BucketList'; Procedura DROP DACĂ EXISTĂ "sp_GetAllWishes"; DELIMITER $$ UTILIZAREA 'BucketList' $$ CREATE DEFINER = "root" @ 'localhost' PROCEDURA 'sp_GetAllWishes' () BEGIN selectați wish_id, wish_title, wish_description, path_query_file din tbl_wish where wish_private = 0; END $$ DELIMITER;Procedura stocată de mai sus va prelua toate dorințele de la
tbl_wish
care nu sunt marcate ca private.Apoi, vom crea o nouă metodă Python pentru a apela procedura stocată
sp_GetAllWishes
. Deschisapp.py
și adăugați următorul cod pentrugetAllWishes
metodă.@ app.route ('/ getAllWishes') def getAllWishes (): încercați: if session.get ('user'): rezultatul cursului conn = mysql.connect () cursor.callproc ('sp_GetAllWishes') = cursor.fetchall () wishes_dict = [] pentru dorință în rezultat: wish_dict = 'Id': wish [0], 'Title': wish [1], 'Description' [3] wishes_dict.append (wish_dict) returnează json.dumps (wishes_dict) altfel: return render_template ('error.html', error ='Acces neautorizat ') excepție la excepție ca e: return render_template (' error.html ' = str (e))În metoda de mai sus, am verificat mai întâi o sesiune de utilizator valabilă și apoi am creat o conexiune MySQL. Utilizarea conexiunii MySQL
Conn
, am folosit un cursor pentru a apela procedura stocatăsp_GetAllWishes
pentru a obține datele necesare. Odată ce datele au fost extrase, am analizat rezultatul și am returnat-o corectJSON
şir.Vom suna pe cele create mai sus
/ getAllWishes
când se încarcă pagina tabloului de bord. Deschisdashboard.html
și, folosind jQuery AJAX, apelați la/ getAllWishes
pedocument.ready.
$ (functie () $ .ajax (url: '/ getAllWishes', tip: 'GET', succes: function (response) console.log (response); (eroare););)Salvați modificările de mai sus și reporniți serverul. După ce v-ați conectat la aplicație, verificați consola browserului dvs. și ar trebui să puteți vizualiza datele preluate din baza de date.
["Descrierea": "Bungee Jumping", "FilePath": "images_11 / create-a-web-app-from-scratch-using-python-flask-and- : 10, "Titlu": "Bungee Jumping", "Descriere": "Muntele Everest urca", "FilePath": "static / Uploads / e3e8f7fa-6cb9-4cc3-9989-a80e5089546f.png" 11, "Titlu": "Urcarea pe Everest", "Descriere": "Rafting pe râu", "FilePath": "static / Uploads / dff3a64c-5193-42b5-9cdb-9d67a7bbacab.png" , "Titlu": "River Rafting", "Descriere": "Deep Sea Diving", "FilePath": 15, "Titlu": "Diving adânc"]Folosind datele din răspuns, vom popula pagina noastră de tablou de bord. Mai întâi, eliminați codul HTML între
.bine
div dindashboard.html
.În apelul de reușită al apelului AJAX, analizați parola
raspuns
la un obiect JavaScript.var data = JSON.parse (răspuns);Va trebui să creăm dinamic codul HTML miniatural folosind jQuery pentru fiecare set de trei dorințe la rând. Deci, mai întâi să creăm o funcție JavaScript pentru a crea dinamic codul HTML. Iată codul HTML pe care îl vom crea dinamic folosind jQuery:
Testarea aplicației
Salut
Vom numi funcția JavaScript
CreateThumb
. În această funcție, vom crea elementele HTML și le vom adăuga elementelor părinte pentru a obține codul HTML afișat mai sus.funcția CreateThumb (id, title, desc, filepath) var mainDiv = $ ('') .attr (' clasă ',' col-sm-4 col-md-4 '); var thumbNail = $ ('') .attr (' clasă ',' miniatură '); var img = $ ('') .attr (' src ': filepath,' data-holder-rendered ': true,' style ':' height: 150px; width: 150px; display: block '); var caption = $ ('') .attr (' clasă ',' caption '); var titlu = $ ('„) .Text (titlu); var desc = $ ('
„) .Text (desc); var p = $ ('
„); var btn = $ ('