What's new in Django community blogs?


Jun 15 2017 [Archived Version] □ Published at Latest Django packages added

Simple and reusable Django application to manage SSH keys associated to users. Fork of django-sshkey.


Jun 15 2017 [Archived Version] □ Published at Latest Django packages added

Associate multiple SSH public keys with Django user accounts


Jun 15 2017 [Archived Version] □ Published at Latest Django packages added

Showing users admin history also saved history of deleted users

New eBooks Available for Subscribers in June 2017

Jun 13 2017 [Archived Version] □ Published at tuts+

Do you want to learn more about gamification with Unity? How about mastering Vue.js or Meteor? Our latest batch of eBooks will teach you all you need to know about these topics and more.

New eBooks available for subscribers

Our Latest Selection of eBooks

This month we’ve made eight code eBooks available for Envato Tuts+ subscribers to download. Here’s a summary of those books and what you can learn from them.

  • Swift Data Structure and Algorithms

    Designing an application to scale while processing large amounts of data or provide fast and efficient searching can be complex, especially running on mobile devices with limited memory and bandwidth. Learning about best practices and knowing how to select the best data structure and algorithm in Swift is crucial to the success of your application and will help ensure your application is a success. That’s what this book will teach you.

  • Meteor

    Meteor: Full-Stack Web Application Development

    Meteor is a JavaScript development platform packed with collections of libraries and packages bound together in a tidy way to take care of everything from development to production, making your web development easier. This eBook will take you through an example of building a blog, give you a cookbook of recipes for Meteor development, and get you equipped with simple solutions to boost your development skills. 

  • Learning Xcode 8

    As the official tool for creating iOS applications, Xcode is chock full of features aimed at making a developer’s job easier, faster, and more fun. This book will take you from complete novice to a published app developer, and covers every step in between. You’ll learn the basics of iOS application development with Xcode, and gradually move on to more advanced topics. By the time you make it to the end of this book, you will have successfully built and published your first iOS application.

  • Gamification with Unity 5

    Gamification With Unity 5.x

    Are you looking at implementing gamification techniques for your business and wondering where to get a complete rundown of all the tricks and techniques? Well, you have come to the right place! This book will start right from the basics such as gameplay elements and their functionalities before gradually moving on to creating your first gamification project from scratch. You’ll be given the tools and shown how to perform various techniques for creating gamified applications in different contexts. Finally, you will implement various game elements into Unity, publish your own task management application, and get to know the best practices and approaches when designing gamified experiences. 

  • Natural Language Processing: Python and NLTK

    Natural Language Processing is a field of computational linguistics and artificial intelligence that deals with human-computer interaction. It provides a seamless interaction between computers and human beings and gives computers the ability to understand human speech with the help of machine learning. The number of human-computer interaction instances are increasing so it’s becoming imperative that computers comprehend all major natural languages. This book takes you through three detailed modules to get you fully up to speed with this important topic.

  • Swift 3 Protocols

    Swift 3 Protocol-Oriented Programming: Second Edition

    This book will help you understand the difference between object-oriented programming and protocol-oriented programming. It will demonstrate how to work with protocol-oriented programming using real-world use cases. You will gain solid knowledge of the different types that can be used in Swift and the differences between value and reference types. You will be taught how to utilize the advanced features of protocol-oriented programming to boost the performance of your applications. By the end of the book, you will have a thorough understanding of protocol-oriented programming and how to utilize it to build powerful, practical applications.

  • Angular 2 By Example

    Angular 2 by Example

    Angular 2 will help you build faster, more efficient, and more flexible cross-platform applications. This book shows you how to build three apps with varying degrees of complexity. In addition to this, you will learn about testability and the framework constructs Angular provides to effectively test your app. The book concludes by providing you with practical advice and useful tips that will come in handy as you build more and more apps with Angular.

  • Learning Vuejs

    Learning Vue.js 2

    Vue.js is one of the latest new frameworks to have piqued the interest of web developers due to its reactivity, reusable components, and ease of use. This book shows developers how to leverage its features to build high-performing, reactive web interfaces with Vue.js. From the initial structuring to full deployment, this book provides step-by-step guidance to developing an interactive web interface from scratch with Vue.js. By the time you finish this book you will have built, tested, and deployed a complete reactive application in Vue.js from scratch.

Start Learning With a Yearly Subscription

Subscribe to Envato Tuts+ for access to our library of hundreds of eBooks. With a Yearly subscription, you can download up to five eBooks per month, while the Yearly Pro subscription gives you unlimited access.

You can also build on your newfound knowledge by using some of the fantastic code scripts and plugins on Envato Market.


Jun 13 2017 [Archived Version] □ Published at Latest Django packages added

Anti-spam protection tools for django applications.


Jun 13 2017 [Archived Version] □ Published at Latest Django packages added

A django OpenID Connect library


Jun 13 2017 [Archived Version] □ Published at Latest Django packages added

An OpenID Connect Client for Django.


Jun 13 2017 [Archived Version] □ Published at Latest Django packages added

OpenID Connect authentication for Django REST Framework


Jun 13 2017 [Archived Version] □ Published at Latest Django packages added

A Django module for easy OpenID Connect authentication

10 Years of Lincoln Loop

Jun 12 2017 [Archived Version] □ Published at Lincoln Loop

April marked Lincoln Loop's 10th anniversary in business. As I reflect on that, I find myself going through all the typical platitudes: it's been a roller-coaster ride, how proud I am of the team, looking forward to another 10 years, and others. Instead of writing about these things in generic terms that could apply to any company, I'd like to share a little about our history and how we came to a decision that really exemplifies what Lincoln Loop has become as a company.

Staying Small

We've made many unorthodox business decisions over the years from open book finances to letting everyone set their own salary. One of the most important decisions we made came during our 2014 company retreat in Mexico. At the time, business was booming. We had just launched our biggest project to date, published a book, and spent the last year trying to scale up to meet the demand. Over a long dinner discussion it became clear that growth and profit might actually contradict the values we had built the company on. Sure we needed profits to survive, but Lincoln Loop was always focused on the happiness of our people over money. At best, growth would have no effect on our happiness, but more than likely it would serve to undermine it.

Humble Beginnings

To understand why we decided to stay small, it helps to understand where Lincoln Loop came from. It was less a spur of the moment decision and more a realization that we have operated that way from the beginning.

Lincoln Loop started with me as a lone freelancer, but I always envisioned building it into a team of highly-skilled experts. To get there, I had to overcome a few major obstacles:

  1. I live in a small mountain town (~12k residents) 150 miles from the closest big city. Finding a team of Django experts locally simply wasn't an option.
  2. As a bootstrapped company, there was no money for an office, relocation package, salaries, etc.
  3. I needed to build up a client base big enough to keep a team busy.

Since I couldn't provide big salaries or a fancy office with an Xbox and ping-pong table, I needed to find other (less costly) benefits I could provide. Rather than the tradtional perks, I discovered Lincoln Loop could offer perks that were unique and focused on removing stress while increasing happiness:

  1. The freedom for people to work their own hours from anyplace in the world.
  2. Removing all the risk and back-office operations of contracting -- invoicing, sales, collections, etc. (a boon for freelancers)
  3. The opportunity to work on interesting projects with an up-and-coming Python web framework, Django.

That last item may come as a surprise, but the Python/Django landscape in April, 2007 was very different than today. This was post Django's magic removal, but pre 0.96. The widely accepted recommendation was to work on a checkout of trunk from Django's subversion repository. Python's packaging tool, pip, was still four years from its initial release and virtualenv would not be released for another six months, at which point it "might still be buggy, but it’s worked well for some of us". PyPI wasn't heavily used and Django "reusable apps" were all the rage. The typical installation instructions for a Django app were to checkout the code from a Google Code or self-hosted subversion repository (GitHub was still a year away) and manually place it on your PYTHONPATH. In contrast to today, these were dark ages indeed.

As you can imagine, the enterprise was not yet ready to bet the farm on Django so career opportunities for Django developers were few and far between. For early commercial adopters of Django, Lincoln Loop was one of the only shops offering professional services in the area. In hindsight, the timing couldn't have been better. We had a first-to-market advantage and could grow our client base as interest in the framework grew. When we had the work available, there were plenty of developers in the Django ecosystem who were excited to get paid to do what they were already doing in their free time. No more paying the bills with PHP, Zope, etc!


As both Django and Lincoln Loop matured, we started taking on larger and more complex projects, but we never lost sight of the original value proposition we offered our team.

Today, big companies like Mozilla, Google, and Instagram are eager to snatch up good Django developers. Despite the competition, most of our development team has been working with us for more than 8 years. That's an eternity in an industry that is known for chewing up and spitting out developers in a couple years. I attribute that longevity to choosing happiness over profits. The decision to stay small, being just one of many we've made to preserve the culture we've built. Of all our accomplishments, the fact that people are happy working here is the one I'm most proud of.


Jun 12 2017 [Archived Version] □ Published at Latest Django packages added

Python at Instagram (PyCon 2017 Must-See Talk 2/6)

Jun 12 2017 [Archived Version] □ Published at Caktus Blog

Part two of six in the 2017 edition of our annual PyCon Must-See Series, highlighting the talks our staff especially loved at PyCon. While there were many great talks, this is our team's shortlist. One of the talks that I considered a must-see was a keynote presentation by Instagram employees Lisa Guo and Hui Ding...

Mysterious 400 Bad Request in Django debug mode

Jun 11 2017 [Archived Version] □ Published at geek.nz under tags  debian django libravatar nzoss

While upgrading Libravatar to a more recent version of Django, I ran into a mysterious 400 error.

In debug mode, my site was working fine, but with DEBUG = False, I would only a page containing this error:

Bad Request (400)

with no extra details in the web server logs.

Turning on extra error logging

To see the full error message, I configured logging to a file by adding this to settings.py:

    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/tmp/debug.log',
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,

Then I got the following error message:

Invalid HTTP_HOST header: 'www.example.com'. You may need to add u'www.example.com' to ALLOWED_HOSTS.

Temporary hack

Sure enough, putting this in settings.py would make it work outside of debug mode:


which means that there's a mismatch between the HTTP_HOST from Apache and the one that Django expects.

Root cause

The underlying problem was that the Libravatar config file was missing the square brackets around the ALLOWED_HOSTS setting.

I had this:

ALLOWED_HOSTS = 'www.example.com'

instead of:

ALLOWED_HOSTS = ['www.example.com']


Jun 09 2017 [Archived Version] □ Published at Latest Django packages added

Stripe integration for Django-based projects


Jun 09 2017 [Archived Version] □ Published at Latest Django packages added

django-web-profiler is a django profiling tool which logs, stores debug toolbar statistics and also a set of URL's statistics using a management command.

django-planet aggregates posts from Django-related blogs. It is not affiliated with or endorsed by the Django Project.

Social Sharing


Tag cloud

admin administration adsense advanced ajax amazon angular angularjs apache api app appengine app engine apple application security aprendiendo python architecture argentina articles asides audrey australia authentication automation backup bash basics best practices binary bitbucket blog blog action day blogging book books buildout business c++ cache capoeira celery celerycam celerycrawler challenges chat cheatsheet cherokee choices christianity class-based-views cliff clojure cloud cms code codeship codeship news coding command community computer computers computing configuration consumernotebook consumer-notebook continuous deployment continuous integration cookiecutter couchdb coverage css custom d data database databases db debian debugging deploy deployment deployment academy design developers development devops digitalocean django django1.7 django admin django cms djangocon django framework django-nose django-readonly-site django-rest-framework django-tagging django templates django-twisted-chat django web framework tutorials documentation dojango dojo dotcloud dreamhost dughh easy_install eclipse education elasticsearch email encoding english error europe eventbrite events expressjs extensions fabric facebook family fashiolista fedora field file filter fix flash flask foreman form forms frameworks friends fun functional reactive programming gae gallery games geek general gentoo gis git github gmail gnome google google app engine guides gunicorn hack hackathon hacking hamburg haskell heroku holidays hosting howto how-to howtos how-tos html http i18n image imaging indifex install installation intermediate internet ios iphone java javascript jinja2 jobs journalism jquery json justmigrated kde la latex linear regression linkedin linode linux login mac machine learning mac os x markdown math memcached meme mercurial meta meteor migration mirror misc model models mod_wsgi mongodb months mozilla multi-language mvc mysql nasa nelenschuurmans newforms news nginx nodejs nosql oauth ogólne openshift opensource open source open-source openstack operations orm osx os x ottawa paas packages packaging patterns pedantics pelican penetration test performance personal personal and misc philippines philosophy php pi pil pinax pip piston planet plone plugin pony postgis postgres postgresql ppoftw presentation private programmieren programming programming & internet project projects pycharm pycon pycon-2013-guide pydiversity pygrunn pyladies pypi pypy pyramid python python3 queryset quick tips quora rabbitmq rails rant ratnadeep debnath reactjs recipe redis refactor release request resolutions rest reusable app review rhel rtnpro ruby ruby on rails scala scaling science screencast script scripting security server setup shell simple smiley snaking software software collections software development south sphinx sprint sql ssh ssl static storage supervisor support svn sysadmin tag tag cloud talk nerdy to me tastypie tdd techblog technical technology template templates template tags test testing tests tip tips tools tornado training transifex travel travel tips for geeks tumbles tutorial tutorials twisted twitter twoscoops typo3 ubuntu uncategorized unicode unittest unix use user authentication usergroup uwsgi uxebu validation virtualenv virtualenvwrapper web web 2.0 web application web applications web design & development webdev web development webfaction web framework websockets whoosh windows wordpress work workshop wsgi yada znc zope