@@ -224,6 +224,13 @@ combined with the example real-world projects listed in the next section. | |||
| 224 | 224 | with | |
| 225 | 225 | [standalone WSGI containers](http://flask.pocoo.org/docs/deploying/wsgi-standalone/). | |
| 226 | 226 | ||
| 227 | + * [Serverless Python Web Applications With AWS Lambda and Flask](https://spiegelmock.com/2018/09/06/serverless-python-web-applications-with-aws-lambda-and-flask/) | ||
| 228 | + is a spectacular post that walks through how to run Flask applications | ||
| 229 | + on AWS Lambda's [serverless](/serverless.html) offering. The tutorial | ||
| 230 | + has instructions on how to include | ||
| 231 | + [application dependencies](/application-dependencies.html) and handle | ||
| 232 | + your [deployment](/deployment.html) workflow. | ||
| 233 | + | ||
| 227 | 234 | * [How to use Flask to upload files to Amazon S3](http://zabana.me/notes/upload-files-amazon-s3-flask.html) | |
| 228 | 235 | provides all the code with detailed explanations on how to store files | |
| 229 | 236 | using [boto](https://boto3.readthedocs.io/en/latest/) and | |
@@ -0,0 +1,44 @@ | |||
| 1 | + title: Django REST Framework | ||
| 2 | + category: page | ||
| 3 | + slug: django-rest-framework-drf | ||
| 4 | + sortorder: 0449 | ||
| 5 | + toc: False | ||
| 6 | + sidebartitle: Django REST Framework | ||
| 7 | + meta: Django REST Framework (DRF) is a Python library for building web application programming interfaces (APIs). | ||
| 8 | + | ||
| 9 | + | ||
| 10 | + # Django REST Framework | ||
| 11 | + [Django REST Framework](http://www.django-rest-framework.org/) | ||
| 12 | + ([source code](https://github.com/encode/django-rest-framework)), | ||
| 13 | + typically abbreviated "DRF", is a Python library for building web | ||
| 14 | + [application programming interfaces (APIs)](/application-programming-interfaces.html). | ||
| 15 | + | ||
| 16 | + <a href="http://www.django-rest-framework.org/" style="border:none"><img src="/img/logos/django-rest-framework.png" width="100%" alt="Django REST Framework logo." class="shot rnd" style="padding: 10px 0 10px 0"></a> | ||
| 17 | + | ||
| 18 | + | ||
| 19 | + ### Django REST Framework resources | ||
| 20 | + * The | ||
| 21 | + [official DRF tutorial](http://www.django-rest-framework.org/tutorial/quickstart/) | ||
| 22 | + is one of the best first-party pieces of documentation on any open source | ||
| 23 | + project. The | ||
| 24 | + [rest of the DRF docs are spectacular as well](http://www.django-rest-framework.org/). | ||
| 25 | + | ||
| 26 | + * [Django: Building REST APIs](http://polyglot.ninja/django-building-rest-apis/) | ||
| 27 | + is the first part in an excellent multi-part series on DRF: | ||
| 28 | + | ||
| 29 | + * [Getting started with DRF](http://polyglot.ninja/django-rest-framework-getting-started/) | ||
| 30 | + * [Serializers](http://polyglot.ninja/django-rest-framework-serializers/) | ||
| 31 | + * [ModelSerializer and Generic Views](http://polyglot.ninja/django-rest-framework-modelserializer-generic-views/) | ||
| 32 | + * [ViewSet, ModelViewSet and Router](http://polyglot.ninja/django-rest-framework-viewset-modelviewset-router/) | ||
| 33 | + * [Authentication and Permissions](http://polyglot.ninja/django-rest-framework-authentication-permissions/) | ||
| 34 | + * [JSON Web Tokens (JWT)](http://polyglot.ninja/django-rest-framework-json-web-tokens-jwt/) | ||
| 35 | + | ||
| 36 | + * [Optimizing slow Django REST Framework performance](https://ses4j.github.io/2015/11/23/optimizing-slow-django-rest-framework-performance/) | ||
| 37 | + | ||
| 38 | + * [TLT: Serializing Authenticated User Data With Django REST Framework](http://gregblogs.com/tlt-serializing-authenticated-user-data-with-django-rest-framework/) | ||
| 39 | + | ||
| 40 | + * [Building an API with Django REST Framework and Class-Based Views](https://codeburst.io/building-an-api-with-django-rest-framework-and-class-based-views-75b369b30396) | ||
| 41 | + | ||
| 42 | + * [Simple Nested API Using Django REST Framework](https://blog.apptension.com/2017/09/13/rest-api-using-django-rest-framework/) | ||
| 43 | + | ||
| 44 | + * [Building APIs with Django and Django Rest Framework](https://books.agiliq.com/projects/django-api-polls-tutorial/en/latest/) | ||
@@ -17,7 +17,7 @@ that software developers can use to add communications such as | |||
| 17 | 17 | [two-factor authentication](https://www.twilio.com/docs/tutorials/walkthrough/two-factor-authentication/python/flask) | |
| 18 | 18 | into their [Python](/learning-programming.html) applications. | |
| 19 | 19 | ||
| 20 | - <img src="/img/logos/twilio.png" width="100%" alt="Twilio logo." class="technical-diagram" style="padding: 10px 0 10px 0;"/> | ||
| 20 | + <img src="/img/logos/twilio.png" width="100%" alt="Twilio logo." class="shot" style="padding: 10px 0 10px 0;"/> | ||
| 21 | 21 | ||
| 22 | 22 | ||
| 23 | 23 | ## Why is Twilio a good API choice? | |
@@ -105,8 +105,13 @@ for fellow developers. | |||
| 105 | 105 | backend to power thousands of Rick Rolling calls in several countries | |
| 106 | 106 | with Twilio. | |
| 107 | 107 | ||
| 108 | + * [Stripe SMS Notifications via Twilio, Heroku, and Python](https://www.twilio.com/blog/2017/02/stripe-sms-notifications-via-twilio-heroku-and-python.html) | ||
| 109 | + is a quick tutorial that demonstrates how to combine multiple services | ||
| 110 | + to receive helpful notifications via SMS. | ||
| 111 | + | ||
| 108 | 112 | ||
| 109 | 113 | #### Disclaimer | |
| 110 | - I [currently work at Twilio](/about-author.html) as a | ||
| 111 | - [Developer Evangelist](https://www.twilio.com/blog/2014/02/introducing-developer-evangelist-matt-makai.html). | ||
| 114 | + I [currently work at Twilio](/about-author.html) on the | ||
| 115 | + [Developer Network](https://www.twilio.com/blog/2014/02/introducing-developer-evangelist-matt-makai.html) | ||
| 116 | + and run a program called [Twilio Voices](http://www.twiliovoices.com/). | ||
| 112 | 117 | ||
@@ -56,6 +56,12 @@ teams, culture, processes and tools into software development organizations. | |||
| 56 | 56 | while a "platform is code". Running code is better than any organizational | |
| 57 | 57 | process. | |
| 58 | 58 | ||
| 59 | + * The open source | ||
| 60 | + [PagerDuty Incident Response guide](https://response.pagerduty.com/) is the | ||
| 61 | + amazing result from their company taking the practices they use to keep | ||
| 62 | + their services running and putting them out for other developers to consume. | ||
| 63 | + Highly recommended. | ||
| 64 | + | ||
| 59 | 65 | * [So, you've been paged](http://blog.scalyr.com/2016/09/so-youve-been-paged/) | |
| 60 | 66 | provides their development team's "Communicate -> Learn -> Act" structure | |
| 61 | 67 | for handling production issues based on lessons learned from their years | |
@@ -68,6 +74,18 @@ teams, culture, processes and tools into software development organizations. | |||
| 68 | 74 | in production. The disadvantage of course is the greater ownership | |
| 69 | 75 | also leads to much greater responsibility when something breaks! | |
| 70 | 76 | ||
| 77 | + * Google's | ||
| 78 | + [Site Reliability Engineering (SRE) book](https://landing.google.com/sre/book/index.html) | ||
| 79 | + is free online and required reading for understanding the practices and | ||
| 80 | + principles behind keeping the largest websites alive. Note though that | ||
| 81 | + some of the advice in the book will be considered controversial at more | ||
| 82 | + stodgy traditional organizations that have done operations differently | ||
| 83 | + for a long time. | ||
| 84 | + | ||
| 85 | + * [Bing: Continuous Delivery](http://stories.visualstudio.com/bing-continuous-delivery/) | ||
| 86 | + is an impressive visual story that explains the practices for how their | ||
| 87 | + team delivers updates to the search engine. | ||
| 88 | + | ||
| 71 | 89 | * [Why are we racing to DevOps?](http://www.cio.com/article/3015237/application-development/why-are-we-racing-to-devops.html) | |
| 72 | 90 | is a very high level summary of the benefits of DevOps to IT organizations. | |
| 73 | 91 | It's not specific to Python and doesn't dive into the details, but it's | |
@@ -0,0 +1,18 @@ | |||
| 1 | + <h3>What's next after building an API?</h3> | ||
| 2 | + <div class="row"> | ||
| 3 | + <div class="c4"> | ||
| 4 | + <div class="well select-next"> | ||
| 5 | + {% include "choices/buttons/best-python-resources.html" %} | ||
| 6 | + </div> | ||
| 7 | + </div> | ||
| 8 | + <div class="c4"> | ||
| 9 | + <div class="well select-next"> | ||
| 10 | + {% include "choices/buttons/api-integration.html" %} | ||
| 11 | + </div> | ||
| 12 | + </div> | ||
| 13 | + <div class="c4"> | ||
| 14 | + <div class="well select-next"> | ||
| 15 | + {% include "choices/buttons/databases.html" %} | ||
| 16 | + </div> | ||
| 17 | + </div> | ||
| 18 | + </div> | ||
0 commit comments