- FAQ: General
- Why does this project exist?
- What does “Django” mean, and how do you pronounce it?
- Is Django stable?
- Does Django scale?
- Who’s behind this?
- How is Django licensed?
- Why does Django include Python’s license file?
- Which sites use Django?
- Django appears to be a MVC framework, but you call the Controller the “view”, and the View the “template”. How come you don’t use the standard names?
- <Framework X> does <feature Y> – why doesn’t Django?
- Why did you write all of Django from scratch, instead of using other Python libraries?
- Is Django a content-management-system (CMS)?
- How can I download the Django documentation to read it offline?
- How do I cite Django?
FAQ: General
Why does this project exist?
Django grew from a very practical need: World Online, a newspaper Weboperation, is responsible for building intensive Web applications on journalismdeadlines. In the fast-paced newsroom, World Online often has only a matter ofhours to take a complicated Web application from concept to public launch.
At the same time, the World Online Web developers have consistently beenperfectionists when it comes to following best practices of Web development.
In fall 2003, the World Online developers (Adrian Holovaty and Simon Willison)ditched PHP and began using Python to develop its websites. As they builtintensive, richly interactive sites such as Lawrence.com, they began to extracta generic Web development framework that let them build Web applications moreand more quickly. They tweaked this framework constantly, adding improvementsover two years.
In summer 2005, World Online decided to open-source the resulting software,Django. Django would not be possible without a whole host of open-sourceprojects – Apache, Python, and PostgreSQL to name a few – and we’rethrilled to be able to give something back to the open-source community.
What does “Django” mean, and how do you pronounce it?
Django is named after Django Reinhardt, a jazz manouche guitarist from the 1930sto early 1950s. To this day, he’s considered one of the best guitarists of all time.
Listen to his music. You’ll like it.
Django is pronounced JANG-oh. Rhymes with FANG-oh. The “D” is silent.
We’ve also recorded an audio clip of the pronunciation.
Is Django stable?
Yes, it’s quite stable. Companies like Disqus, Instagram, Pinterest, andMozilla have been using Django for many years. Sites built on Django haveweathered traffic spikes of over 50 thousand hits per second.
Does Django scale?
Yes. Compared to development time, hardware is cheap, and so Django isdesigned to take advantage of as much hardware as you can throw at it.
Django uses a “shared-nothing” architecture, which means you can add hardwareat any level – database servers, caching servers or Web/application servers.
The framework cleanly separates components such as its database layer andapplication layer. And it ships with a simple-yet-powerfulcache framework.
Who’s behind this?
Django was originally developed at World Online, the Web department of anewspaper in Lawrence, Kansas, USA. Django’s now run by an internationalteam of volunteers.
How is Django licensed?
Django is distributed under the 3-clause BSD license. Thisis an open source license granting broad permissions to modify and redistributeDjango.
Why does Django include Python’s license file?
Django includes code from the Python standard library. Python is distributedunder a permissive open source license. A copy of the Python license is included with Django for compliance with Python’s terms.
Which sites use Django?
DjangoSites.org features a constantly growing list of Django-powered sites.
Django appears to be a MVC framework, but you call the Controller the “view”, and the View the “template”. How come you don’t use the standard names?
Well, the standard names are debatable.
In our interpretation of MVC, the “view” describes the data that gets presentedto the user. It’s not necessarily how the data looks, but which data ispresented. The view describes which data you see, not how you see it. It’sa subtle distinction.
So, in our case, a “view” is the Python callback function for a particular URL,because that callback function describes which data is presented.
Furthermore, it’s sensible to separate content from presentation – which iswhere templates come in. In Django, a “view” describes which data is presented,but a view normally delegates to a template, which describes how the data ispresented.
Where does the “controller” fit in, then? In Django’s case, it’s probably theframework itself: the machinery that sends a request to the appropriate view,according to the Django URL configuration.
If you’re hungry for acronyms, you might say that Django is a “MTV” framework– that is, “model”, “template”, and “view.” That breakdown makes much moresense.
At the end of the day, of course, it comes down to getting stuff done. And,regardless of how things are named, Django gets stuff done in a way that’s mostlogical to us.
<Framework X> does <feature Y> – why doesn’t Django?
We’re well aware that there are other awesome Web frameworks out there, andwe’re not averse to borrowing ideas where appropriate. However, Django wasdeveloped precisely because we were unhappy with the status quo, so please beaware that “because <Framework X> does it” is not going to be sufficient reasonto add a given feature to Django.
Why did you write all of Django from scratch, instead of using other Python libraries?
When Django was originally written, Adrian and Simon spent quite a bit of timeexploring the various Python Web frameworks available.
In our opinion, none of them were completely up to snuff.
We’re picky. You might even call us perfectionists. (With deadlines.)
Over time, we stumbled across open-source libraries that did things we’dalready implemented. It was reassuring to see other people solving similarproblems in similar ways, but it was too late to integrate outside code: We’dalready written, tested and implemented our own framework bits in severalproduction settings – and our own code met our needs delightfully.
In most cases, however, we found that existing frameworks/tools inevitably hadsome sort of fundamental, fatal flaw that made us squeamish. No tool fit ourphilosophies 100%.
Like we said: We’re picky.
We’ve documented our philosophies on thedesign philosophies page.
Is Django a content-management-system (CMS)?
No, Django is not a CMS, or any sort of “turnkey product” in and of itself.It’s a Web framework; it’s a programming tool that lets you build websites.
For example, it doesn’t make much sense to compare Django to something likeDrupal, because Django is something you use to create things like Drupal.
Of course, Django’s automatic admin site is fantastic and timesaving – butthe admin site is one module of Django the framework. Furthermore, althoughDjango has special conveniences for building “CMS-y” apps, that doesn’t meanit’s not just as appropriate for building “non-CMS-y” apps (whatever thatmeans!).
How can I download the Django documentation to read it offline?
The Django docs are available in the docs
directory of each Django tarballrelease. These docs are in reST (reStructuredText) format, and each text filecorresponds to a Web page on the official Django site.
Because the documentation is stored in revision control, youcan browse documentation changes just like you can browse code changes.
Technically, the docs on Django’s site are generated from the latest developmentversions of those reST documents, so the docs on the Django site may offer moreinformation than the docs that come with the latest Django release.
How do I cite Django?
It’s difficult to give an official citation format, for two reasons: citationformats can vary wildly between publications, and citation standards forsoftware are still a matter of some debate.
For example, APA style, would dictate something like:
- Django (Version 1.5) [Computer Software]. (2013). Retrieved from https://djangoproject.com.
However, the only true guide is what your publisher will accept, so get a copyof those guidelines and fill in the gaps as best you can.
If your referencing style guide requires a publisher name, use “Django SoftwareFoundation”.
If you need a publishing location, use “Lawrence, Kansas”.
If you need a web address, use https://djangoproject.com.
If you need a name, just use “Django”, without any tagline.
If you need a publication date, use the year of release of the version you’rereferencing (e.g., 2013 for v1.5)