Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
IMPORT FLASK
AN INTRODUCTION TO PYTHON’S FRIENDLY
NEIGHBOURHOOD WEB MICROFRAMEWORK.
NEIL GREY
NEIL@COMBOMASH.COM
COMBOMASH...
AGENDA
❖ INTRODUCTIONS
❖ GETTING STARTED
❖ OVERVIEW OF PYTHON & MVC
❖ WHY FLASK?
❖ HELLO WORLD!
❖ ROUTING
❖ TEMPLATES
❖ IN...
INTRODUCTIONS
❖ WHO’S THE LOUD GUY UP FRONT?
❖ PROFESSIONAL PROGRAMMER AT MID-SIZED VISUAL EFFECTS &
GAMING COMPANIES FOR ...
GETTING STARTED
❖ OVERVIEW OF PYTHON & MVC
❖ WHY FLASK?
❖ HELLO WORLD!
❖ ROUTING
❖ TEMPLATES
LEARN PYTHON IN 10 MINUTES
HTTP://WWW.STAVROS.IO/TUTORIALS/PYTHON/
MODEL-VIEW-CONTROLLER (MVC)
❖ THE MODEL
❖ REPRESENTATION OF DATA. USUALLY HAS A STRONG RELATION WITH
THE UNDERLYING DATABA...
WHY FLASK?
❖ SMALL : QUICK TO LEARN AND MASTER
❖ COMPLETE : YOU CAN USE TO DO SERIOUS APPS
❖ LEAN : A SHELL AND A TEXT EDI...
FLASK: HELLO WORLD!
• RUN SCRIPT VIA COMMAND-LINE: PYTHON RUN.PY
• GO TO: 127.0.0.1:5000 TO REVIEW
FLASK: ROUTING
Flask uses dynamic pathing to
match user requests to server-
side responses. This is in direct
contrast to ...
FLASK: ROUTING
Status Code Type
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
500 Inte...
FLASK: TEMPLATES
Templating keeps the logic of your web app separate from its layout and style. Ideally, we want to avoid
...
FLASK: TEMPLATES
Templating is handled by Jinja2, a python-esque framework that allows for control statements and loops to...
FLASK: TEMPLATES
We can use Jinja2's template inheritance feature, which allows us to move the parts of the page layout th...
INTERACTIVE COMPONENTS
❖ FORMS, REQUESTS, & AJAX
❖ DATABASE INTEGRATION (SQLITE)
❖ LOGGING IN / SESSIONS
❖ EMAIL SUPPORT
❖...
FORMS, REQUESTS, & AJAX
Let’s use the free drag-and-
drop library dropzone.js to
demo what processing a file
upload server...
BASIC DATABASE SETUP (SQLITE)
Let’s setup a super-basic plain-text
user database that we can then
integrate into a login f...
SESSIONS / LOGGING IN
SESSIONS / LOGGING IN
This time around we throw
sqlite into the mix to check and
see if the user exists in the
database be...
EMAIL SUPPORT
To use flask-mail we need to import it
in our init and configure it with the
settings we seek.
Once we’re up...
Thank You
We really appreciate you taking the time to join in on this Flask
workshop today! If you have any questions down...
Upcoming SlideShare
Loading in …5
×

BUILDING MODERN PYTHON WEB FRAMEWORKS USING FLASK WITH NEIL GREY

2,138 views

Published on

How to get up and running in minutes with the lean, scalable, and easy to maintain Python web framework, Flask. Attendees will get to see how Flask acts as the sturdy glue between your database framework, front-end templates and operating system. Keep an eye out for tips/tricks using SQLite, Jinja2, and Werkzeug.

Neil is a software developer with a background in 3D graphics programming and management information systems. Presently he's working with Image Engine on feature-film visual effects projects like Teenage Mutant Ninja Turtles, Elysium, Fast & Furious. He's also a co-founder of ComboMash Entertainment, an independent game studio based in Vancouver.

Published in: Technology
  • Be the first to comment

BUILDING MODERN PYTHON WEB FRAMEWORKS USING FLASK WITH NEIL GREY

  1. 1. IMPORT FLASK AN INTRODUCTION TO PYTHON’S FRIENDLY NEIGHBOURHOOD WEB MICROFRAMEWORK. NEIL GREY NEIL@COMBOMASH.COM COMBOMASH ENTERTAINMENT
  2. 2. AGENDA ❖ INTRODUCTIONS ❖ GETTING STARTED ❖ OVERVIEW OF PYTHON & MVC ❖ WHY FLASK? ❖ HELLO WORLD! ❖ ROUTING ❖ TEMPLATES ❖ INTERACTIVE COMPONENTS ❖ FORMS, REQUESTS, & AJAX ❖ DATABASE INTEGRATION (SQLITE) ❖ LOGGING IN / SESSIONS ❖ EMAIL SUPPORT
  3. 3. INTRODUCTIONS ❖ WHO’S THE LOUD GUY UP FRONT? ❖ PROFESSIONAL PROGRAMMER AT MID-SIZED VISUAL EFFECTS & GAMING COMPANIES FOR 6 YEARS ❖ HEAVY FOCUS ON SYSTEMS THAT PROMOTE EFFECTIVE COMMUNICATION & EFFICIENT PROCESSES ❖ CYCLIST, BIKRAMITE, INDEPENDENT GAME DEVELOPER, OPEN- SOURCE ENTHUSIAST, VEGAN, SELF-DIRECTED INVESTOR, MARATHONER, BUSINESS OWNER ❖ BEEN WORKING WITH FLASK REGULARLY FOR JUST OVER A YEAR AND WITH PYTHON FOR LAST 5 YEARS. EXPERIENCE IN WEB TECH DATING BACK TO MID-90’S. ❖ ASK THE AUDIENCE ❖ WHAT’S YOUR NAME & WHY ARE YOU HERE TODAY? ❖ EXPERIENCE LEVEL IN PYTHON? WEB DEVELOPMENT? nataliedeemachine.com
  4. 4. GETTING STARTED ❖ OVERVIEW OF PYTHON & MVC ❖ WHY FLASK? ❖ HELLO WORLD! ❖ ROUTING ❖ TEMPLATES
  5. 5. LEARN PYTHON IN 10 MINUTES HTTP://WWW.STAVROS.IO/TUTORIALS/PYTHON/
  6. 6. MODEL-VIEW-CONTROLLER (MVC) ❖ THE MODEL ❖ REPRESENTATION OF DATA. USUALLY HAS A STRONG RELATION WITH THE UNDERLYING DATABASE. ❖ THE VIEW(S) ❖ WHAT IS SHOWN TO THE USER. CAN BE ANY KIND OF USER INTERFACE, USUALLY HTML PAGES WITH JAVASCRIPT WHEN DEALING WITH THE WEB. ❖ THE CONTROLS ❖ WHAT OPERATIONS ARE DONE ON THE DATA. A CLEAN & CONVENIENT WAY TO DESIGN SOFTWARE PROJECTS INVOLVING USER INTERFACES WHICH PRESENT AND MANIPULATE SETS OF DATA.
  7. 7. WHY FLASK? ❖ SMALL : QUICK TO LEARN AND MASTER ❖ COMPLETE : YOU CAN USE TO DO SERIOUS APPS ❖ LEAN : A SHELL AND A TEXT EDITOR ARE ENOUGH, NO NEED FOR A CUMBERSOME IDE ❖ IT IS VERY WELL DOCUMENTED ❖ WHY USING A SCRIPTING LANGUAGE LIKE PYTHON FOR A WEB APPLICATION? ❖ ADAPTED LANGUAGE WHICH EASILY SUPPORTS PASTING TOGETHER VARIOUS COMPONENTS (DATABASE, RENDERING, ROUTING, . . . ) ❖ MAKES ITS EASIER TO RELEASE EARLY & OFTEN (DEVOPS) ❖ EASIER TO MAINTAIN & MODIFY ❖ SPEED GOOD ENOUGH FOR MANY USE CASES
  8. 8. FLASK: HELLO WORLD! • RUN SCRIPT VIA COMMAND-LINE: PYTHON RUN.PY • GO TO: 127.0.0.1:5000 TO REVIEW
  9. 9. FLASK: ROUTING Flask uses dynamic pathing to match user requests to server- side responses. This is in direct contrast to a language like PHP which primarily uses directory- based pathing to locate files containing called-upon functionality. This is extremely useful since we can pass variables into our dynamic paths so not to duplicate functionality across multiple files, and still have a human-readable URL.
  10. 10. FLASK: ROUTING Status Code Type 400 Bad Request 401 Unauthorized 402 Payment Required 403 Forbidden 404 Not Found 500 Internal Server Error 501 Not Implemented 503 Service Unavailable There’s a lot to be said for graceful error handling, especially when it comes to publicly accessible web sites. Flask lets you easily custom handle errors as well as throw them when needed.
  11. 11. FLASK: TEMPLATES Templating keeps the logic of your web app separate from its layout and style. Ideally, we want to avoid scenarios where we are processing any HTML within our main Python syntax. VS
  12. 12. FLASK: TEMPLATES Templating is handled by Jinja2, a python-esque framework that allows for control statements and loops to be placed into HTML templates, but discourages full logic processing within HTML blocks. In our current example, we are passing 3 variables through “render_template” on the Python side: article_title, user, & posts. If article_title is provided we prepend it in the document header. We also have a for loop that goes through an array of posts, printing out relevant information on each iteration.
  13. 13. FLASK: TEMPLATES We can use Jinja2's template inheritance feature, which allows us to move the parts of the page layout that are common to all templates and put them in a base template from which all other templates are derived. In this example we’ve split out the display of the posts from the standardized outline of the page. This makes it so that we won’t have to maintain elements like the main menu across multiple files.
  14. 14. INTERACTIVE COMPONENTS ❖ FORMS, REQUESTS, & AJAX ❖ DATABASE INTEGRATION (SQLITE) ❖ LOGGING IN / SESSIONS ❖ EMAIL SUPPORT ❖ DEPLOYMENT
  15. 15. FORMS, REQUESTS, & AJAX Let’s use the free drag-and- drop library dropzone.js to demo what processing a file upload server-side would look like.
  16. 16. BASIC DATABASE SETUP (SQLITE) Let’s setup a super-basic plain-text user database that we can then integrate into a login form. Usually we would integrate this with the “flask_login” package, but for the sake of simplicity we’re going about it at a different approach.
  17. 17. SESSIONS / LOGGING IN
  18. 18. SESSIONS / LOGGING IN This time around we throw sqlite into the mix to check and see if the user exists in the database before setting the session ‘logged_in’ variable.
  19. 19. EMAIL SUPPORT To use flask-mail we need to import it in our init and configure it with the settings we seek. Once we’re up and running there we can call upon that functionality from anywhere else in the application.
  20. 20. Thank You We really appreciate you taking the time to join in on this Flask workshop today! If you have any questions down the line, feel free to contact me at neil@combomash.com Over at ComboMash Entertainment, we’re launching a kickstarter for a game where tiy ommand a crew of oil rigger mercenaries tasked with acquiring rare resources from uncharted planets. Build offensive towers to attack hordes of aliens in an ever changing environment. If you’d like follow along with our progress, join our mailing list at http://www.hextraction.com Our Kickstarter campaign will be launching on April 21st and we’d love to have your support! Many Thanks, Neil Grey neil@combomash.com

×