Django community: RSS
This page, updated regularly, aggregates Community blog posts from the Django community.
-
Serving static files in Django
Serving static files, especially during development, is frequently a pain point. In this post, we will discuss the various settings and directory structure and how they interact with each other. Let's start with development when you have DEBUG = True. We will create a Django project from scratch so that we are fully aware about what file in what directory we are talking about. So, this blog post will be a little longer than it should be. We will try these things with Django 1.4, but these will work on Django 1.3 as well. I have not tested it with Django 1.2, so not sure about 1.2. Setting up the project. If you think you don't need this section, then skip to the next section titled Serving static files. Just make sure to see the directory structure at the end of this section to get an idea of it, so that you will be comfortable in the next section. We will try everything inside a virtual environment. We name our virtual environment as staticvirt. So the command we need is virtualenv staticvirt. ~$ virtualenv staticvirt Next we need to start a Django project inside this virtualenv. Make sure you are … -
Farewell, Malcolm
Following an amazing week at PyCon, I woke up this morning to discover that I'd lost a good friend, and that the Python community has lost one of its most brilliant minds. Details are still unclear, but Malcolm Tredinnick passed away this past weekend, apparently as the result of a seizure. I met Malcolm first online - I was very new to Django, and had just written a blog post about a kludgy method I'd worked out for using a model manager to switch between multiple databases. This was well before multi db became a regular part of the ORM, although at the time it was already a much-requested feature. My method worked, but it was not elegant or pretty, and when I saw Malcolm's name among the comments on my blog post, I was immediately intimidated. But he gave me some tips and taught me a few things through his questions and comments. And when I met him at DjangoCon the following year, he was nothing but kind, encouraging me to continue learning and writing. For a brief time, I lived in Lawrence, Kansas, and I was fortunate enough to get to spend some time with Malcolm whenever he … -
Introduction to Django – presentation
This presentation shows the basics of Django – what is inside the framework and explains the Model-View-Template system. One of the most important parts is a diagram how the request is processed and the response is generated. Shows the project and the application structure and the basic elements – Models, URLs dispatcher, Views and Templates. Introduction to django from Ilian Iliev -
Redesign
This site has been quiet for a long time. My last post was over a year ago in February 2012. That post before that was yet another year prior. With a full-time job and other personal commitments, blog posting and other side projects easily fall off the radar. Take my site’s new design, rolling out today. I initially started working on it in February 2011, going by the file creation timestamps on my machine. I worked on it for a week or so, got some feedback, then dropped it. A year later, I took the big step to actually create a source repository on Bitbucket to make sure the code was backed up somewhere safe (I don’t recall making any other progress at the time). It took me over a year from that point to actually pick up the project and push it through to completion. The design Like the previous design of my site, I have taken a lot of inspiration from people in the Django community. A lot of the design inspiration comes from Steve Losh, who has consistently done an excellent job at clean, readable web design. I’m not sure what I was thinking with the previous … -
Functions in Python Homework
After some delay(please excuse me for it) here are sample solutions of the problems defined in the presentation Functions in Python. Solutions are also available at GitHub. -
#djangosthlm - talking Django hosting
I’m sitting on yet another train from Stockholm back the good old industrial Västerås (or Bästerås as we call it (or Webbsterås;-)), me and my colleague Richard just attended the Django Stockholm meetup, hosted by Dynabyte. Awesome evening with awesome people, moar please=) The first talk of the meetup was Henrik talking AND live coding while using South, really impressive that he almost completely pulled it off! Big kudos to Henrik=) I myself did a small talk about all the different alternatives that exists for hosting a Django site in the year 2013. With a small intro to shared hosting we quickly moved on to DotCloud, Heroku, Gondor etc. We talked a bit about best practices and this best practices bit would maybe fit for a one day hackathon or something. To be able actually nail this. My slides are not much to see since I mainly use them to show of my mad graphical skillz (I mean, WHO doesn’t want a magical pony and rainbows in their presentation). If you want, go ahead and take a look, the interesting part starts at the end, with all the links to better blogposts about hosting than this ;-) Thanks again to … -
Raspberry IO announced at PyCon
PyCon is one of our favorite conferences here at Caktus. We’ve been attending for the past 4 years now and it is amazing to see how much the community has grown. This year is especially special because Jesse Noller and the Python Software Foundation (PSF) came to us to help them build Raspberry IO. The site features work from the Python community and their adventures in using Raspberry Pi with Python. -
Raspberry IO announced at PyCon
PyCon is one of our favorite conferences here at Caktus. We’ve been attending for the past 4 years now and it is amazing to see how much the community has grown. This year is especially special because Jesse Noller and the Python Software Foundation (PSF) came to us to help them build Raspberry IO. The site features work from the Python community and their adventures in using Raspberry Pi with Python. One of our passions at Caktus is collaboration and education. The Raspberry IO application exemplifies just that. Developers share the steps of how they’ve created their projects and interact with other users by providing feedback and answering questions. The site features a Q&A, a wiki and also a community feed aggregator. Users who are extremely active on the site, contributing projects, answering questions will have their projects featured on the homepage. We worked closely with the PSF to also create the logo and branding of the site. Our designer, Julia Elman, drew inspiration from the vintage video game era to create Razzy, the mascot for Raspberry IO. This is Jesse Noller’s last year as the chair of PyCon and we are sad to see him go. This application was his going … -
Django Internationalization
A few weeks ago I gave a talk at the Chicago Djangonauts meeting on Django Internationalization. Apparently this isn't a task that a lot of people need to do frequently, as the crowd was not too familiar with the content of the talk. Luckily, internationalization isn't too complicated ... -
Google Appengine - First Impressions
Google launched their EC2 competitor, Appengine yesterday, and all hell broke loose. And in about 24 hours, the 10,000 accounts were used up. Currently it is tied to only working with python, and Django 0.96.1 works out of the box. <!- - more - -> The Good Python powered. Django works out of the box. No sysadmining chores. Promise of infinite scalability with no configuration. (Ah!) Free for now. The Bad Python powered, if you want to use ruby/java/php, sorry you are out of luck. Your code is tied to Google. You might be able to reuse most of your code, but the DB/ORM sepcific code, ah you are out of luck. And if you are building database backed websites, well most of your most complex code talk to ORM. Too magical. Explicit is better than implicit. On the dev server I do not know where my data is stored. If I change the data model, the changed models are available immediately. But well, how do you do it? Free for now, and no way to pay for when your usage out grows the free quota limits. -
Using Appengine with Django, why it is pretty much unusable
We are hard at work building 42topics.com, and are looking at the best places to deploy this. So when I heard about Appengine, with out of box Django support(gasp!) I was delighted. After using it for a day, and posting a tutorial, I am so disappointed. Peeves in no particular order. Appengine is a very constrained environment, so out goes any chance to run background jobs. The ORM-API is very similar to Django, but yet the Django API is much better. modelobj.filter('attr =', value1).filter('attr2 =', value2) or modelobj.filter(attr = value1, attr2 = value2). Putting entity level operations on modelobj.manager is much cleaner that making them classmethods, as argued here. Very half baked documentation. Releasing without sufficient testing on windows. If you follow the Getting started guide, and are on windows, I hope you like debugging regexes NO JOINS? Ok so I can use obj.master to simlute this. Umm can I get GROUP BY? What about UNION? Admittedly Bigtable is not relational, but are you telling me Google built all their search without a way to simulate GROUP BY. PDB does not work on dev server. With Django's dev server, I put breakpoints with PDB all the time, and it works … -
Two Django+Appengine Tutorials
I have posted two Tutorials for Using Django with Appengine. For people who do not know Django For people who already know Django see what we build in this tutorial And here a few good links about the topic. James Bennet tells exactly why Appengine and Django are not so good together. Ian Bicking has an interesting take on how Appengine can change the economics of Python hosting. The guys at Joyent reading my mind on why I or you can not deploy any production site on Appengine. (Hint. you mean I can never move away, without writing half my code?) -
New tutorial - Building a search engine with Appengine and Yahoo
I wrote a new tutorial on building a search engine using Appengine, and Yahoo Search API here. This uses pure Appengine API, and not Django, and is a tutorial on how to use Appengine without Django. -
Five Things I Hate About Django.
The five things I hate about * meme seems have died down, and memes, should not be allowed to die. Of course I love Django, and have bet very heavily on it. But we do not know a topic, until we know it warts, so here you go. The listing is in no particular order, so sorry no numbering. Ajax with Django is hard: Most of the Django Community has decided that bundling Javascript helpers with a python framework is bad idea. Though I can understand the reasoning, (argued here and rebuttal), that Javascript is so basic that you can not be expected to not know it, I can not agree with it. SQL is as basic as Javascript, and yet we have ORM for abstracting away the common and the tedious. Of Course, with simplejson, and a good Javascript library, you can build Ajax apps fast and with only a minimal amout of fuss. And yet switching between Python and Javascript, twice every hour is a huge time drain. Eg. I put commas after the last element in Python arrays, with JS this would work in FF, but fail with weird errors in IE. Lack of identity map: If … -
An interview with Malcolm Tredinnick - Django core contributor
Malcolm Tredinnick is a core contributor to Django, and was the driving force behind the Queryset-refactor branch of Django, which adds important capabilities such as model inheritance. He has a long association with OSS, and contributed significantly to GNOME and Django. He graciously agreed to be interviewed at 42topics blog. Malcolm's blog, Defying Classification, can be read here. Shabda: Would you tell a few things about yourself, how did you get involved with OSS and Gnome, and with Django? Malcolm: Here are some recollections I've written about: 1 and 2 Short version; started using Linux in university as a poor undergrad; kept using it since then (started back in 1993). Started using GNOME in 1999 (after trying a very early version of Qt and what became KDE), started contributing to GNOME about 12 months later (mid-2000). Started using Django in October 2005, I guess (a few months after it was open sourced) and haven't stopped. Started contributing patches more or less immediately and was given commit privileges about March of 2006, from memory. Shabda: So what is one thing in Django which you absolutely love, and one thing which you think Django should have done differently? Malcolm: I guess Django's … -
Interview with James Bennett - Django release manager
James Bennett is the release manager of Django, and a long time contributor. He works on Ellington, a CMS designed for news organizations. His book, Practical Django Projects, is being published by Apress, and is scheduled to hit bookshelves in June 2008. He graciously agreed to be interviewed at the 42topics.com blog. His blog, The B-List, can be found here. Shabda: Would you tell something about yourself, how did you get started with Django, and what other OSS projects are you involved with? James: I got into Django fairly soon after the initial public release; I'd been doing PHP and Perl work (mostly Textpattern on the PHP side, Scoop on the Perl side), and I was working on teaching myself Ruby and Rails because it looked interesting. But I'd always liked Python; it was just that there weren't a whole lot of good options for Python web development at that point. You could do Zope, or you could do Twisted, but they both had pretty steep learning curves when compared to the type of work I was doing, so it just wasn't worth it. Django changed that; I think I did the tutorial the day it was released, and I … -
An interview with Russell Keith-Magee - Django core contributor
Russell Keith-Magee is a longtime core contributor to Django. He has worked extensively with the Django testing and serialization components. He is currently working on django-evolution, the ability to do schema evolution from Django, an often requested feature, and is mentoring a GSOC proposal to add aggregate queries support to Django ORM. He is currently a Senior R&D Software Engineer at plugger.com.au. He graciously agreed to an email interview with the 42topics blog. Shabda: Would you tell a little about yourself? How did you get started with Django? What areas of Django have you contributed to? Russell: I'm a thirty-one year old, father of one, living in the most isolated capital city in the world - Perth, Western Australia. Strangely, for all my involvement in Django, my background has almost nothing to do with the web. I studied Physics as an undergraduate, and studied neural networks for my PhD. My first job was with a startup in the defence industry developing simulation frameworks. Over time, mostly as a result of my association with Django, I've become more involved in building web services. Shabda: How did you get started with Django? What areas of Django have you contributed to? Russell: I've … -
Popularizing Django -- Or Reusable apps considered harmful.
For all its technical merits, Django is still a very niche technology. It is my belief that the thing which is holding Django back the most, is due to one of its strengths. Making reusable apps is easy and simple in Django. In Django this is the correct way to do things. You take a few apps, mix them together in your project, and deploy to start your site. Compare the installation steps of Wordpress and an imaginary blog software better than Wordpress called Djangopress. Wordpress FTP wordpress to webserver. Point browser to site.com/blog Next-Next-Next done. Djangopress Svn checkout Djangopress Svn checkout django-registration Svn checkout other Django apps Djangopress depends on. Maybe django-mptt, django-threadedcomments or a few others. Edit your settings.py to add all these apps to INSTALLED_APPS. Add database settings, and other changes if needed. Telnet to your server and do syncdb Create templates. Done. This does not take into account the extra hoops Apache makes you jump through, compared to using a PHP app. How I got started with web programming. I wanted to run a forum. PhpBB was free, and seemed most widely used. Installed it, and wanted to tinker with it, so learnt Php. If there … -
An interview with Michael Trier
Michael Trier is a long time Django user and evangelist. He has worked with a number of technologies including Rails and .net. His insights on marketing Django to traditionally Enterprisy areas were extremely informative. He produces TWiD, along with Brian Rosner which is great to keep abreast of the latest happenings in the Django community. He graciously agreed to be interviewed by the 42topics blog. Shabda: Would you tell a little about yourself, how did you get started with Django, what other projects have you used or are associated with? Michael: Well, I've been programming ever since I can remember, probably around 11 years old. I grew up in Silicon Valley, and that whole story is a pretty interesting one. I did the usual thing of starting out with languages like ASM, C, C++ , Pascal. Moved on to things like Delphi, VB, and most recently I spent quite a bit of time with Ruby, Rails, and within the past year and a half dabbling with Django. I came to Django for a particular reason. I was focussed on building a high content push type of site and it just seemed like Django was a much better fit for that … -
An Interview with Jacob Kaplan-Moss - Creator of Django
Jacob Kaplan-Moss is the co-creator of Django along with Adrian Holovaty, as well as the author of the Django Book. He has been involved with Django since before it was called Django. He is currently employed at Whiskey Media where his job is hacking at Django. He blogs on Jacobian.org. He graciously agreed to be interviewed at the 42topics blog. Shabda: Would you tell a little about yourself? How did you get started with Django? What other software/applications have you worked with. (Both OSS and otherwise)? Jacob: So a bit about me: I grew up in Silicon Valley, so like many other geeks I got started with computers really early; I was programming professionally before I graduated high school. I didn't start out doing web development; in college I worked on video surveillance systems for airports, harbors, marinas, and highways. That's where I found Python: I rewrote a Java-based camera controller in Python and haven't looked back since. I started doing web development pretty seriously when I moved to New York and took a job for a design firm there. The job was pretty terrible, and the technologies were worse: the good sites were PHP, and there was a bunch … -
An Interview with Adrian Holovaty - Creator of Django
Adrian Holovaty is the co-creator of Django, author of the Django book and is currently the BDFL of Django along with Jacob Kaplan-Moss. He studied journalism at University of Missouri–Columbia and has worked with many news sites including Lawrence Journal World and Washington Post. He currently works at EveryBlock, a startup he founded. Shabda: Would you tell a little about yourself? You majored in Journalism, how did you move to Programming? Adrian: Sure! I have a dual background in journalism and computer science. I intended to get a degree in journalism and a minor in computer science, but things got a little off track. I heard from a professional colleague that a certain Web site would probably hire me if I graduated a semester early, so I hurriedly dropped my CS minor and got special permission to graduate early -- but once the time came to ask for that job, the company was in the middle of a hiring freeze and didn't have a position for me. So, in hindsight, I should've stuck with the minor, but things ended up working out OK. Because journalism and computer science don't normally go together, I've had some success in this silly little … -
Develop Twitter API application in django and deploy on Google App Engine
Twitter's robust REST API enables building of good applications that leverage its increasingly large and real-time data. Google's cloud system App Engine not only provides a scalable platform for deploying applications, but also proves to be economically viable because of its pay per resource usage model and a large free quota. Little wonder then, there are increasingly large number of twitter apps being deployed on App Engine. In this post, I am going to examine how to create a simple application based on twitter's REST API and deploy it on Google App Engine. A deployed version can be found on Twitter-Follow. The specification is simple. It finds if a twitter user is following another twitter user, given their user names. The application is developed using django and deployed on Appengine using the app engine patch project. The code is open sourced with GPL v3 and can be checked out from Google Code. Lets get started building this application. Create an application Create a new application from App Engine Dashboard by registering an unique appspot.com sub-domain. This will be your application's unique identifier. You may have to register first. Install App Engine SDK Download and install the App Engine SDK. There … -
Better Python package management using source and version control systems
Thanks to awesome django community, there is plenty of open source django code around. These packages get updated quite often and if you use it often like we do, you'd have possibly realized the need to manage these packages better. Thankfully, all python ever needs is the source, and all you need to do is to place the source in the python path. Most projects use Distributed Version Control Systems like Mercurial and Git, and they come locally with the entire history of the source which provides a lot of control to use any version of the code. For code that we use often, like django packages, using the source from a version control system seems to be the best way to manage. In order to install django-registration, a popular django app by James Bennett, you need to: Clone the repository: $ hg clone https://becomingguru@bitbucket.org/ubernostrum/django-registration/ django_registration Create a symbolic link in the python path: $ sudo ln -fs ~/django_registration/registration /usr/lib/python2.6/dist-packages/django_registration Thats it. django_registration is now on the python path, courtesy of symbollic link, that links the django-registration source to python path, in this case the dist-packages/ folder; thus it will be possible to import this app within the python environment. … -
Django Request Response processing
Have you wondered the steps a users request goes through before being responded to by Django? The answer lies in reading django.core.handlers.base and django.core.handlers.wsgi. Here is a diagram explaining what happens. (Click to enlarge.) The steps are. (With Apache/Mod_wsgi, similar steps for other setup.) User's request comes to Apache etc. Apache sends request to django.core.handlers.wsgi via mod_wsgi. A list of request and response middleware callables is created. Request middleware is applied. If it sends a response, it is returned to the user. urlresolvers.resolve finds the view funcion to use. View middleware is applied. If response comes, it is sent back to the user. View function is called. It talks to models to do business logic, and renders the templates. The response middleware is applied, and response is sent back to the users. This misses a lot of important steps (Exception middleware, request_context populating, ...) but is a basic high level overview. Resources django/core/handlers/base.py django/core/handlers/wsgi.py .dia and other files for the image Do you twitter? Do you Github? Find us there. -
Remote debugging - debugging pesky server only bugs
Here is a quick tip. (Obvious if you work with Django for any length of time, but I have seen a few people who are not aware) You can put debug trace import pdb; pdb.set_trace() in your code, and put it on the server. When you access this view from your local browser, the debug is still hit and you have a debug shell on your server where you can step through. (Obviously this works only if you ran the code via manage.py runserver. But manage.py runserver start the server to listen only on local connections. If you want to access remotely you need to run as, python manage.py runserver 0.0.0.0:8000 Edit: As SmileyChris commented, a faster way is, python manage.py runserver 0:8000 The 0.0.0.0 implies that remote connections are possible. For me, this has been a lifesaver against those pesky bugs which show themselves only on the server, but not on the local machine.