at skabe et web - app fra bunden ved hjælp af pyton kolbe, og mysql: del 6

, skabe en web - app fra bunden ved hjælp af pyton kolbe, og mysql: del 6,,,,, 105,,,,,,,,, 15,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til blot $3..- og' t miss. denne post er en del af en serie, "at skabe en web - app fra bunden ved hjælp af pyton kolbe, og mysql. at skabe et web - app fra bunden ved hjælp af pyton kolbe, og mysql: del 5creating en web - app fra bunden ved hjælp af pyton kolbe, og mysql: del 7 i den tidligere del af denne serie, gennemførte vi kalder for ønskeseddel om brugeren hjemmeside.i denne del af serier, vil vi gennemføre en mulighed for, at brugeren får et billede, der tegner sig for en   ønske, en mulighed for at markere det ønske, som er fuldført, og en mulighed for fred.,, begyndt  ,, lad os starte ved kloning i den tidligere del af læren fra   github.,, tag klon https: //github. kom /jay3dec /pythonflaskmysqlapp_part5. smut, når kildekoden er blevet klonet, sejle til projektet fortegnelse og starte web - server.  , cd - pythonflaskmysqlapp_part5 pyton app. py, punkt din browser til   http: //localhost: 5002 / , og du bør er ansøgningen ikke.,, at det bruger grænseflade, lad os starte ved at ændre vores "føje ønske" side til at omfatte en mulighed for at få et billede.navigere, skabeloner /addwish. html.vores form, addwish.html, er ret lille, så lad os ændre bootstrap http: //kode for at gøre form lodret.  ,, vi vil først ændre form horisontale, vertikale form, så fjern den klasse, i form af horisontale,   fra form.vi vil også tilføje tre nye kontrol: en fil, uploade kontrol til at uploade fotos, en check kasse til mark det ønske, som private, og en ny check kasse for at markere ønsker som afsluttet.her er ændret, addwish. html,.,, <!doctype html > < http: //lang = ", en" > < head > < afsnit > pyton kolbe træskoliste app < /afsnit > < forbindelse rel = "stylesheet" href = "https: //maxcdn. bootstrapcdn. kom /bootstrap /3.3.2 /css /støvlestrop. min.css" > < forbindelse href = "http://getbootstrap.com/examples/jumbotron-narrow/jumbotron-narrow.css" rel = "stylesheet" > < manuskript src = "... /statisk /er /jquery-1.11.2. er" > < /manuskript > < stil. >. btn fil (holdning: relativ; overløb: skjult.}. btn fil bidrag [type = fil] {holdning: absolutte, top: 0: 0; min bredde: 100%; min højde: 100%; skriftstørrelsen: 10.0px; text-align: right; filter: alpha(opacity=0); opacity: 0; outline: none; background: white; cursor: inherit; display: block; } </style> </head> <body> <div class="container"> <div class="header"> <nav> <ul class="nav nav-pills pull-right"> <li role="presentation" class="active"><a href="#">Add Item</a> </li> <li role="presentation"><a href="/logout">Logout</a> </li> </ul> <. /nav > < h3 klasse = "tekst afdæmpet" > pyton kolbe app < /h3 > < /div > < form rolle = "form" metode = "post" action = "/addwish" > <!- form, navn - - > < legende > skabe dit ønske < /legende > <!- tekst input - > < div klasse = "gruppe" > < etiket til = "txttitle" > afsnit < /etiketten > < input id = "txttitle" navn = "inputtitle" type = "tekst" indikation af en art = "indikation af en art" klasse = "form styreinput md" > < /div > <!-- Textarea --> <div class="form-group"> <label for="txtPost">Description</label> <textarea class="form-control" id="txtPost" name="inputDescription"></textarea> </div> <div class="form-group"> <label for="txtPost">Photos</label> <div class="input-group"> <span class="input-group-btn"> <span class="btn btn-primary btn-file"> Browse&hellip; <input type="file" id="fileupload" name="file" multiple> </span> </span> < input type = "tekst" klasse = "kontrol" readonly > < /div > < /div > < div klasse = "gruppe" > < etiket > ved denne som private og ikke er synlige for andre. < /etiketten > < br /> < input type = "afkrydsningsfelt" > mark som private < over klasse = "glyphicon glyphicon lås" aria skjult = "ægte" > < /span > < ///////div > < div klasse = "gruppe" > < etiket > har du allerede gjort det?< /etiketten > < br /> < input type = "afkrydsningsfelt" > mark som < over klasse = "glyphicon glyphicon okay" aria skjult = "ægte" > < /span > < /div. > <!- knap - > < div klasse = "gruppe" > < p - klassen = "tekst center" > < input id = "singlebutton" navn = "singlebutton" klasse = "btn btn primære" type = "stille" værdi = "offentliggøre" /> < /p > < /div > < /form > < fod klasse = "lille" > < p > & kopi; virksomhedernes 2015 < /p > < /fod > < /div > < /organ > < /html >,, medmindre ovennævnte ændringer og genoptage den server.efter undertegnelsen i med succes, klik på, vil du tilføje, sammenhæng og bør være i stand til at se de modificerede tilføje ønsker side.,,,,, gennemførelse af uploade funktionalitet  , vi vil bruge blueimp jquery fil. for at gennemføre sagen overføre funktioner.download den krævede filerne fra github.Extract the source and add the following script references to ,addWish.html,.,,<script src="../static/js/jquery-1.11.2.js"></script> <script src="../static/js/jquery.ui.widget.js"></script> <script type="text/javascript" src="../static/js/jquery.fileupload.js"></script> <script type="text/javascript" src="../static/js/jquery.fileupload-process.js"></script> <script type="text/javascript" src="../static/js/jquery.fileupload-ui.js"></script>,,On ,addWish.html, page load, add the plugin initiation code to the file upload button click.,,$(function() { $('#fileupload').fileupload({ url: 'upload', dataType: 'json', add: function(e, data) { data. submit();}, succes: funktion (svar, status) (konsol. log (reaktion)}, fejl: funktion (fejl) (konsol. log (fejl))))), som det fremgår af ovenstående kode, vi har knyttet fil. stik af med  ,&#fileupload,   knap.filen uploade filen til   stik af stillinger, upload, sagsbehandler, som vi skal definere vores pyton kode.vi har også fastlagt en  , tilføje funktion til at indsende data, og defineret  , succes og fiasko, callbacks til at håndtere uploade succes og fiasko.,, lad os definere, upload,   pyton fil uploade kontaktperson i app. py.definere en rute /upload, som vist:,, @ app. rute (» /upload "metoder = ['get", "post"]) def upload():&#fil uploade kontaktperson kode er her, kontrollere, om anmodningen er, efter anmodning, og hvis så læs filen fra anmodning.,, hvis request.method = = "post": file = anmodning. filer ['file ", bliver vi også nødt til at få billedet fil udvidelse for at redde den fil.så import, os, og så deler udvidelse navn fra filnavnet.,, udvidelse = os. vej. splitext (fil. filnavn) [1], når vi har sagen udvidelse, vil vi skabe en ny unik   filnavn   med, uuid,.import, uuid og skabe filnavnet.,, f_name = str (uuid. uuid4()) + udvidelse, skabe en mappe, uploader i statisk mappe.det er her, vi holder uploadede billeder.og vejen til upload mappe i app - konfiguration.,, app. ud ['upload_folder '] =' statisk /uploader, nu redde udsendt fil til, upload_folder, placering og returnere sagsakterne navn som et svar.,, fil. redde (os. vej. gå med ud (app. ['upload_folder "f_name) tilbage json. lossepladser (('filename": f_name}), bortset fra ovennævnte ændringer og genoptage den server.punkt din browser på http: //localhost: 5002 og underskriver med gyldige papirer.prøv at få et billede af browse knap, og da gjort, tjek din browser konsol.du burde være i stand til at se tilbage, uploadet file navn.  , i stedet for den rom input tekstfelt, lad os tilføje et billede element til at udvise uploadet billedet.så erstatte rom input tekstfelt med følgende: kode.,, < div klasse = "stands" > < img id = "imgupload" stil = "bredde: 140px. højde: 140px;" klasse = "img virksomhed beskrevet" > < /div >, i sagen uploade succes callback, ajourføre,&#imgupload, er src, til uploadet billedet.,, $('# imgupload'). attr ('src,'static /uploader /+ svar. filnavn);,, medmindre ovennævnte ændringer og genoptage den server.tegn på, at anvendelsen og forsøge at få et nyt image fil, og du skal være i stand til at se de uploadede image.,,,,,, vi bliver nødt til at ændre vores, tbl_wish, tabel struktur til at omfatte tre nye områder.ændre, tbl_wish som vist nedenfor, aendre tabel er bucketlist `. ` ` ` ` tbl_wish tilføje, kolonne wish_file_path varchar (200) ugyldig efter er wish_date `, tilføje kolonne er wish_accomplished er int for misligholdelse 0 efter er wish_file_path `, tilføje kolonne er wish_private er int for misligholdelse 0 efter er wish_accomplished «. næste lad os ændre lagrede procedurer  , sp_addwish, og sp_updatewish,   til også at omfatte   den nyligt tilføjede områder til databasen.  , ændre, sp_addwish, opbevares procedure til også at omfatte de tre nye tilføjes marker.,, er bucketlist « - procedure, hvis der er sp_addwish skilletegn for $«. brug ikke bucketlist ` $skabe definer = "rod" @ er localhost er procedure er sp_addwish (i p_title varchar (45), i p_description varchar (1000), i p_user_id bigint,p_file_path varchar (200), i p_is_private int i p_is_done int) begynder at indsætte i tbl_wish (wish_title, wish_description, wish_user_id, wish_date, wish_file_path, wish_private, wish_accomplished) - værdier (p_title, p_description, p_user_id, now(), p_file_path, p_is_private, p_is_done); ende skilletegn for $;, også ændre de oplagrede procedure, sp_updatewish, til også at omfatte de tre nye områder, er tilføjet. bucketlist « - procedure, hvis der er sp_updatewish « skilletegn for $brug er bucketlist ` $skabe definer = "rod" @ er localhost er procedure er sp_updatewish (i p_title varchar (45), i p_description varchar (1000), i p_wish_id bigint, i p_user_id bigint, i p_file_path varchar (200), i p_is_private int i p_is_done int) begynder at ajourføre tbl_wish fastsat wish_title = p_title, wish_description = p_description, wish_file_path = p_file_path, wish_private = p_is_private, wish_accomplished = p_is_done, hvor wish_id = p_wish_id og wish_user_id = p_user_id; ende skilletegn for $;,, ændre og /addwish, sagsbehandleren metode at læse den nyligt udsendte områder og give dem til de lagrede procedure.,, hvis anmodning. form. kom ('filepath) er ingen: _filepath = andet: _filepath = anmodning. form. kom ('filepath "), hvis anmodning. form. kom ('private) er ingen: _private = 0 andre: _private = 1, hvis anmodning. form. kom ('done) er ingen: _done = 0 andre: _done = 1, når værdiende har læst, vil vi give dem til mysql opbevares procedure.,, markør. callproc ('sp_addwish "(_title, _description, _user, _filepath, _private, _done)), i, addwish.html, s. vi bliver nødt til at sætte navn, attribut for de elementer, der skal udstationeres.så tilføje, navn, at både den nyligt tilføjede tjek kasserne.,, < input navn = "privat" type = "afkrydsningsfelt" > mark som private < over klasse = "glyphicon glyphicon lås" aria skjult = "ægte" > < /span > og det hedder "færdig" input = "type = afkrydsningsfelt" > mark som < over klasse = "glyphicon glyphicon okay" aria skjult = "ægte" > < /span >, nu skal vi også give uploade filen vej.så vil vi skabe en skjult input område og dets værdi på den fil, uploade succes callback.,, < input type = "skjulte" navn = "filepath" id = "filepath" > < /input >,, der er dens værdi i den fil, uploade succes callback. succes: funktion (svar, status) (var - filepath = statisk /uploader /+ response.filename. $('# imgupload'). attr ('src, filepath); $('# filepath). val (filepath)), medmindre ovennævnte ændringer og genoptage den server.tegn på med gyldige papirer og forsøge at tilføje en ny ønsker med alle nødvendige oplysninger.når tilføjet med succes, skal det være opført på brugeren hjemmeside.,, ændre edit ønsker gennemførelse, først skal vi tilføje noget: kode for de tre nye områder.So open up ,userHome.html, and add the following HTML code after the ,title, and ,description, HTML.,,<div class="form-group"> <label for="txtPost">Photos</label> <div class="input-group"> <span class="input-group-btn"> <span class="btn btn-primary btn-file"> Browse&hellip; <input type="file" id="fileupload" name="file" multiple> </span> </span> <div class="pull-right"> <img id="imgUpload" style="width: 140px; height: 140px;" class="img-thumbnail"> <input type="hidden" name="filePath" id="filePath"></input> </div> < /div > < /div > < div klasse = "gruppe" > < etiket > ved denne som private og ikke er synlige for andre. < /etiketten > < br /> og lt; input id = "chkprivate" navn = "privat" type = "afkrydsningsfelt" > mark som private < over klasse = "glyphicon glyphicon lås" aria skjult = "ægte" > < /span > < /div > < div. klasse = "gruppe" > < etiket > har du allerede gjort det?< /etiketten > < br /> < input id = "chkdone" navn = "gjort" type = afkrydsningsfelt "> mark som < over klasse =" glyphicon glyphicon okay "aria skjult =" ægte "> < /span > < /div >,, vi bliver nødt til at hente de data, der kræves til at forsyne ovennævnte områder på klipper.så lad os ændre de oplagrede procedure, sp_getwishbyid, til at omfatte yderligere områder som vist:  , skabe definer = "rod" @ er localhost er procedure er sp_getwishbyid (i p_wish_id bigint, i p_user_id bigint) begynde vælge wish_id, wish_title, wish_description, wish_file_path, wish_private, wish_accomplished fra tbl_wish, hvor wish_id = p_wish_id og wish_user_id = p_user_id;,, vi bliver nødt til at ændre den, json, serie i, getwishbyid, route metode til også at omfatte de nye områder.Modify the wish list in ,/getWishById, as shown:,,wish.append({'Id':result[0][0],'Title':result[0][1],'Description':result[0][2],'FilePath':result[0][3],'Private':result[0][4],'Done':result[0][5]}),,To render the result, we need to parse the data received in the success callback of the ,Edit, JavaScript function in ,userHome.html,.,,success: function(res) { var data = JSON.parse(res); $('#editTitle').val(data[0]['Title']); $('#editDescription').val(data[0]['Description']); $('#imgUpload').attr('src', data[0]['FilePath']); if (data[0]['Private'] == "1") { $('#chkPrivate').attr('checked', 'checked'); } if (data[0]['Done'] == "1") { $('#chkDone').attr('checked', 'chesmed)} $('# editmodal'). modal();}, redde de ændringer og genoptage den server.tegn på med gyldige papirer, og når brugeren hjemmeside, prøv at redigere et ønske fra en ønskeseddel.You should have the data populated in the Edit popup.,,,,,Now, similar to what we did on the add wish page, add the jQuery-File-Upload script reference in ,userHome.html,.,,<script src="../static/js/jquery-1.11.2.js"></script> <script src="../static/js/jquery.ui.widget.js"></script> <script type="text/javascript" src="../static/js/jquery.fileupload.js"></script> <script type="text/javascript" src="../static/js/jquery.fileupload-process.js"></script> <script type="text/javascript" src="../static/js/jquery.fileupload-ui.js"></script>,,Initialize the file upload control in the edit popup using the same code we used on the add wish page.,,$(function() { $('#fileupload). fileupload ((url: "overføring", datatype: "json, tilføje: funktion (e data) (data. submit();}, succes: funktion (svar, status) (var - filepath = statisk /uploader /+ response.filename. $('# imgupload'). attr ('src, filepath); $('# filepath). val (filepath)}, fejl: funktion (fejl) (konsol. log (fejl))))), nu skal vi   ændre ajourføre knap klik i edit pop - up - til også at omfatte de ekstra områder tilføjes.så i, btnupdate, knap klik, ændre dataparametre, gik til at omfatte de tre nye områder som vist:,, data: {afsnit: $('# edittitle'). val(), beskrivelse: $('# editdescription'). val(), id: localstorage. getitem ('editid "), filepath: $('# imgupload'). attr ('src"), isprivate: $('# chkprivate). (": kontrolleret)?1:0, isdone: $('# chkdone). (": kontrolleret)?1:0}, luk op, app.py og ændre den, updatewish, sagsbehandleren metode til at analysere den nyligt tilføjede områder.,, _filepath = anmodning. form ['filepath '] _isprivate = anmodning. form ['isprivate'] _isdone = anmodning. form ['isdone ", ændre proceduren til metode til også at omfatte de ekstra parametre.,, markør. callproc ('sp_updatewish" (_title, _description, _wish_id, _user, _filepath, _isprivate, _isdone), luk nu op, sp_updatewish, og ændre det til også at omfatte nyligt tilføjede områder.,, skilletegn for $skabe definer = "rod" @ er localhost "procedure" sp_updatewish (i p_title varchar (45), i p_description varchar (1000), i p_wish_id bigint, i p_user_id bigint, i p_file_path varchar (200), i p_is_private int i p_is_done int) begynder at ajourføre tbl_wish set wish_title = p_title, wish_description = p_description, wish_file_path = p_file_path, wish_private = p_is_private, wish_accomplished = p_is_done, hvor wish_id = p_wish_id og wish_user_id = p_user_id; ende, medmindre alle de ovennævnte ændringer og genoptage den server.tegn på med gyldige papirer og forsøge at ændre og ajourføre de eksisterende angivelser.,, at pakke det ind, i denne del af tutor - udgaven, så vi, hvordan vi kan integrere og anvende   blueimp jquery fil. stik af at uploade billeder i vores pyton kolbe anvendelse.i næste del af denne serie, vi skal vise de ønsker udført af brugerne om anvendelse hjemmeside og tilføje de funktioner, som de ønsker,.,, lad os ved dine tanker, korrektioner og forslag i bemærkningerne nedenfor.   kildekode fra denne lektion er tilgængelig på   github.,

Add Wish Page with Image Upload
Add Wish Page With Upload
Edit Pop Up With Additional Fields



Previous:
Next Page: