In het vorige deel van deze serie hebben we de uploadfunctionaliteit voor de gebruikers geïmplementeerd en een wens toegevoegd. We hebben ook een paar meer opties toegevoegd met betrekking tot de wens van een gebruiker op de pagina Wens toevoegen. In deze zelfstudie nemen we het naar het volgende niveau door de functionaliteit te implementeren om een bepaalde wens leuk te vinden.
Laten we beginnen met het klonen van het vorige deel van de tutorial vanuit GitHub.
git clone https://github.com/jay3dec/PythonFlaskMySQLApp_Part6.git
Nadat de broncode is gekloond, navigeert u naar de projectdirectory en start u de webserver.
cd PythonFlaskMySQLApp_Part6 python app.py
Richt uw browser op http: // localhost: 5002 / en u zou de applicatie moeten laten draaien.
We maken een nieuwe pagina met de naam dashboard
waar alle wensen van verschillende gebruikers worden getoond. Elke gebruiker kan de wensen die in het dashboard worden weergegeven, leuk vinden of erop reageren. Navigeer dus naar de map Sjablonen en maak een bestand met de naam dashboard.html
. Doe open dashboard.html
en voeg de volgende HTML-code toe:
Python Flask Bucket Lijst App Python Flask-app
Bungee jumpen
vehicula ut id elit.
Bungee jumpen
vehicula ut id elit.
Bungee jumpen
vehicula ut id elit.
Bungee jumpen
vehicula ut id elit.
Bungee jumpen
vehicula ut id elit.
Bungee jumpen
vehicula ut id elit.
Doe open
app.py
en maak een nieuwe route genaamd/ showDashboard
. Via deze route zullen we de dashboardpagina weergeven.@ app.route ('/ showDashboard') def showDashboard (): return render_template ('dashboard.html')Wijzig de
/ validateLogin
methode om de gebruiker bij de succesvolle aanmelding bij de dashboardpagina om te leiden in plaats van de startpagina van de gebruiker.return redirect ('/ showDashboard')Sla de bovenstaande wijzigingen op en start de server opnieuw. Richt uw browser op http: // localhost: 50002 en log in met een geldig e-mailadres en wachtwoord. Nadat u bent ingelogd, zou u de dashboardpagina moeten kunnen zien.
Zoals te zien is in de bovenstaande afbeelding, laten we alle wensen zien die door verschillende gebruikers zijn gecreëerd en geven we toegang aan andere gebruikers om ze leuk te vinden.
Bevolk het Dashboard
Eerst moeten we de gegevens uit de database ophalen om het dashboard te vullen. Laten we dus een opgeslagen procedure maken om de wensen van gebruikers te krijgen.
GEBRUIK 'BucketList'; DROP-procedure IF EXISTS 'sp_GetAllWishes'; DELIMITER $$ GEBRUIK 'BucketList' $$ CREATE DEFINER = "root" @ 'localhost' PROCEDURE 'sp_GetAllWishes' () BEGIN selecteer wish_id, wish_title, wish_description, wish_file_path from tbl_wish where wish_private = 0; END $$ DELIMITER;De bovenstaande opgeslagen procedure haalt alle wensen uit
tbl_wish
die niet als privé zijn gemarkeerd.Vervolgens maken we een nieuwe Python-methode om de opgeslagen procedure aan te roepen
sp_GetAllWishes
. Openapp.py
en voeg de volgende code toe voor degetAllWishes
methode.@ app.route ('/ getAllWishes') def getAllWishes (): try: if session.get ('user'): conn = mysql.connect () cursor = conn.cursor () cursor.callproc ('sp_GetAllWishes') resultaat = cursor.fetchall () wishes_dict = [] voor wish in result: wish_dict = 'Id': wish [0], 'Title': wish [1], 'Description': wish [2], 'FilePath': wish [3] wishes_dict.append (wish_dict) return json.dumps (wishes_dict) else: return render_template ('error.html', error = 'Unauthorized Access') behalve uitzondering als e: return render_template ('error.html', error = str (e))In de bovenstaande methode hebben we eerst gecontroleerd op een geldige gebruikerssessie en vervolgens een MySQL-verbinding gemaakt. De MySQL-verbinding gebruiken
conn
, we gebruikten een cursor om de opgeslagen procedure aan te roepensp_GetAllWishes
om de vereiste gegevens te verkrijgen. Nadat de gegevens zijn opgehaald, hebben we het resultaat geparseerd en een juist resultaat geretourneerdJSON
draad.We zullen het bovenstaande gecreëerd noemen
/ getAllWishes
methode wanneer de dashboardpagina wordt geladen. Opendashboard.html
en, met behulp van jQuery AJAX, een oproep doen/ getAllWishes
opdocument.ready.
$ (function () $ .ajax (url: '/ getAllWishes', type: 'GET', success: function (response) console.log (response);, error: function (error) console.log (fout); ); )Sla de bovenstaande wijzigingen op en start de server opnieuw. Nadat u bent aangemeld bij de toepassing, controleert u uw browserconsole en moet u de gegevens die zijn opgehaald uit de database kunnen bekijken.
["Description": "Bungee Jumping", "FilePath": "images_11 / create-a-web-app-from-scratch-using-python-flask-and-mysql-part-7.jpg", "Id" : 10, "Title": "Bungee Jumping", "Description": "Mount Everest climb", "FilePath": "static / Uploads / e3e8f7fa-6cb9-4cc3-9989-a80e5089546f.png", "Id": 11, "Titel": "Mount Everest climb", "Description": "River Rafting", "FilePath": "static / Uploads / dff3a64c-5193-42b5-9cdb-9d67a7bbacab.png", "Id": 14 , "Title": "River Rafting", "Description": "Deep Sea Diving", "FilePath": "static / Uploads / b0656759-c038-46b4-9529-c208aaa6bfb7.png", "Id": 15, "Titel": "Diepzeeduiken"]Aan de hand van de gegevens uit het antwoord vullen we onze dashboardpagina in. Verwijder eerst de HTML-code tussen de
.goed
div uitdashboard.html
.In de succes callback van de AJAX-aanroep, parser de
antwoord
naar een JavaScript-object.var data = JSON.parse (respons);We moeten de thumbnail-HTML-code dynamisch maken met behulp van jQuery voor elke set van drie wensen op een rij. Dus laten we eerst een JavaScript-functie maken om de HTML-code dynamisch te maken. Dit is de HTML-code die we dynamisch gaan maken met behulp van jQuery:
App testen
Hallo
We zullen de JavaScript-functie een naam geven
CreateThumb
. In deze functie maken we de HTML-elementen en voegen we deze toe aan hun bovenliggende elementen om de bovenstaande HTML-code te krijgen.functie CreateThumb (id, title, desc, filepath) var mainDiv = $ ('') .attr (' class ',' col-sm-4 col-md-4 '); var thumbNail = $ ('') .attr (' class ',' thumbnail '); var img = $ ('') .attr (' src ': filepath,' data-holder-rendered ': true,' style ':' height: 150px; width: 150px; display: block '); var caption = $ ('') .attr (' klasse ',' bijschrift '); var title = $ (') .Text (titel); var desc = $ ('
') .Text (af); var p = $ ('
'); var btn = $ ('