Django community: RSS
This page, updated regularly, aggregates Community blog posts from the Django community.
-
Resources for Django on WebFaction
It feels like forever ago that patrickbeeson.com and a few of my other sites were hosted on Dreamhost. That is, of course, an increasingly distant memory now that I'm served by WebFaction's nearly fire-proof boxes. But making a Django environment stable wasn't as turn-key as their marketing might lead you to suspect (though it's easier than Dreamhost). In an effort to help future WebFaction Djangonauts, here are some most-read posts from WebFaction's excellent user-forum and knowledgebase. Domain transfer Note: WebFaction doesn't handle domain registration. You'll need to change your name servers to those used by WebFaction. Mine are still on Dreamhost. How can I add a new domain to my account? Apache configuration How do I stop/start/restart my Django Apache instance? How to fix errors like: ImportError: No module named django.core.management How do I serve static content? Running multiple Django sites from the same Apache/mod_python instance Django configuration Serving the Django admin media directly from the main Apache server How do I run the latest Django trunk? Cron + Django Script For Newbies - deploying your Django app Running "manage.py syncdb" Using Robots.txt file under Django in WebFaction Sending e-mails from Django Deploying A Django Application Memory usage Note: If … -
Django and mod_wsgi: A perfect match!
mod_wsgi is an Apache module for serving WSGI-based Python web applications from the Apache HTTP server. Django, along with almost every other Python web framework today, comes bundled with a backend for acting like a WSGI application. A couple of months ago I decided to try it out in spite of mod_python. Discovering and trying out mod_wsgi really suprised me. It can take a massive beating, and outperforms mod_python in every practical aspect. The setup You will need a short Python "bootstrap" script to create a WSGI-handler for your Django project. Here is an example (call it wsgi_handler.py and place it in the root directory of your Django project - the one with manage.py and settings.py): import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') os.environ['DJANGO_SETTINGS_MODULE'] = 'projectname.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler() Finally set up your Apache virtualhost to use mod_wsgi: <VirtualHost *> ServerName www.projectname.org ServerAlias *projectname.org Alias /admin_media /usr/lib/python2.4/site-packages/django/contrib/admin/media <Location /admin_media> Order allow,deny Allow from all </Location> Alias /media /home/user/projectname/media <Location /media> Order allow,deny Allow from all </Location> WSGIScriptAlias / /home/user/projectname/wsgi_handler.py WSGIDaemonProcess projectname user=user group=user processes=1 threads=10 WSGIProcessGroup projectname </VirtualHost> In the WSGIDaemonProcess line, you can easily manage the amount of system resources (measured in processes and threads) mod_wsgi should … -
'Practical' tips for working with Django
Everything I did building the content management system for this Web site was wrong. Actually, that might be an overstatement since this Web site works quite well (better than it did in Movable Type). But in the course of building a new Django content management system (CMS) that will drive the new, soon-to-be-launched Young Professionals of Knoxville Web site, I've learned a lot of useful techniques. Much of my new-found knowledge is due to Django Release Manager James Bennett's wonderful book "Practical Django Projects." Custom managers One of the critical needs for the new YPK site is the posting and display of events. At first, I figured this would require a standard model with the following fields: slug name location (ForeignKey to Location subclass) description event date start time finish time attire (With two options: formal and casual) category (ForeignKey to Category app) But then I realized that I would need a way to filter out events that are no longer current -- who wants to view old events? That's where custom mangers in models come into play: class CurrentManager(models.Manager): def get_query_set(self): return super(CurrentManager, self).get_query_set().filter(event_date__gte=datetime.date.today()) This allows me to filter all events whose date is greater than or equal to … -
Hacking Django forms for CSS flexibility
The default output of the Django forms (former newforms) module is not very CSS friendly. With a few simple adjustments, you can make your web designer colleague happy. This patch will add three classes on the parent HTML element of the rendering of each form field (the tr, li or p tag depending on your rendering mode): The type of the form field. (Examples: CharField, ModelChoiceField) The type of the widget. (Examples: TextInput, SelectInput) Is the form field optional or required: Optional or Required Now a required DateField will render, using the as_table rendering, as: <tr class="DateField TextInput Required"> <th> <label for="id_date">Date</label> </th> <td> <input type="text" name="date" id="id_date" /> </td> </tr> Example uses A couple of example use cases where my patch will help you out: Special styling of required fields possible. Easier to add a date picker by JavaScript. Special styling of checkboxes (styling input elements to width: 100% also affects those). Download the patch Patch against forms/forms.py in Django 1.0: Download - View How to patch your newly downloaded Django-1.0.tar.gz For those of you not quite familiar with working with patches: $ wget http://www.hacktheplanet.dk/export/HEAD/misc/forms.py.patch $ wget http://www.djangoproject.com/download/1.0/tarball/ $ tar xvfz Django-1.0.tar.gz $ patch -d Django-1.0/django/forms/ < forms.py.patch -
How Django is good for SEO
Django, the venerable Python framework created for the publishing needs of a newspaper Web site, is surprisingly good for organic search engine optimization (SEO). In fact, Django comes with many options out-of-the-box that sets it apart from other means of building Web applications. These include: beautiful URLs, a plethora of database options, sitemap framework and elegant template design. Beautiful URLs Compare an URL from most any Django Web site to those of an ASP or PHP site, and you'll notice a big difference: You can read the Django URL. And that's good for you and Google since it's factored into the page's importance. Here's an example of URLs captured from two newspaper Web sites, the first using Django: Knoxnews.com (Django): http://www.knoxnews.com/news/2008/jul/22/storms-fell-trees-cut-power/ Startrib.com: http://www.startribune.com/local/stpaul/25971699.html Some PHP sites come close to Django's beautiful URLs: News-record.com (PHP/Drupal): http://www.news-record.com/content/2008/07/21/article/superintendent_finalists_have_nc_connections But what makes Django's URLs extra nice is the ease at which you can create them. To design URLs in Django, you need only create a Python module called URLconf. This serves as a "table of contents for your app," according to the official Django documentation. Here is an example of what a sample news site's URLconf looks like (taken from Django documentation): from django.conf.urls.defaults … -
YPKnox.com: Knoxville's newest Django site
The launch of the redesigned and retooled Young Professionals of Knoxville Web site brings yet another Django site online for the city of the Sunsphere. It also marks my third Django project -- the others being this site and Knox'd -- since I began learning the vaunted Python framework nearly two years ago. What I learned Building the new YPK Web site was a challenge in several ways. Here are some specific problems I encountered: How to filter out expired events in specific views, but make the permalinks available for bookmarks and search engines. How to only show "live" press releases, as opposed to press releases being edited. How to pass in more objects into generic views. How to improve the site performance by writing more efficient database queries and text-to-HTML rendering. The solutions for these problems were documented in a previous blog entry titled "'Practical' tips for working with Django." Also, I must again credit James Bennett for publishing his wonderful book Practical Django Projects without which I would probably still be hunting down information (or bugging the developers at work). Site features The new YPK Web site isn't that extraordinary. But it does feature some useful ways of … -
How to create user-specific admins in Django
The newForms admin branch of Django officially landed in trunk a few weeks ago. Not only does this allow for the awesome django.contrib.admin application to be more customizable, it also solves handily a problem I ran into for an upcoming project: Creating a user-specific Django admin where users see only the objects they create. Project intentions My latest Django project involves creating a basic content management system (CMS) that I can use as a hands-on example for a journalism class I'm teaching at The University of Tennessee this fall. The class, Managing Newspaper Web sites, will cover basic concepts for managing a modern newsroom where a CMS is a vital part of the publishing process. One assignment, for example, will require students to take a story written for print, and edit it for the Web as they enter it into a CMS. To accomplish this goal, I plan to build a basic models for stories, categories and photos that I hope will emulate those in Ellington, the Django-based CMS used by newspaper Web sites owned by Scripps (my employer). Other requirements But unlike Ellingon, where anyone with the proper access can see everyone else's stories, I don't want students to … -
How to upgrade to Django Comments 1.0
The release of Django 1.0 held many new developments for the Python-based framework that I've used to build several projects during the past few months. But one feature I was really looking forward to exploring was the new, refactored comments application. Unfortunately, Django Comments 1.0 also comes with the scary prospect of database updates, data migrations, markup changes, CSS changes and other headaches. Here's how I tackled the now-documented upgrade for this application. Prepare your projects My personal Web site was already running on a variation of Django trunk (pre-alpha) before I upgraded to Django 1.0 final. This made the update process somewhat easier since I'd already been through the updates for newForms admin and the like. Also, I don't have a typical development environment for this site, which really puts an emphasis on reading through the documentation. You don't want surprises from backwards-incompatible changes! Here are the steps I took for preparing my site for Django Comments 1.0: Read the documentation on the Django Project site thoroughly (including the upgrade guide) Comment out, or remove any references to the awesome, but incompatible (for now) django-comment-utils package Change any reference to "FreeComment" to "Comment" Change template tags to reflect the … -
Medill's News Mixer remixes story comments
The Knight Foundation grant-backed graduate program at Medill's School of Journalism has birthed what could be a game-changing effort for news story comments. Their effort, called News Mixer, leverages traditional news content, Facebook's Connect feature and offers three methods of user feedback: Questions and answers: Allows a reader to leave a question about the story, and allows other readers, including the reporter, to leave an answer. Quips: A short-answer, or Twitter-like format that allows you to offer a quick response, limited to 140 characters. Letters to the editor: An outlet for readers to send their thoughts in 250 words or less, whether about an article, another letter someone wrote, or on any subject the author deems important. An editor can then select and highlight the best letters. But what's unique about News Mixer is how it uses these three types of functionality to channel user comments in a more meaningful way. Why News Mixer is different Traditional Web story comments are wrought with problems, especially when editors and content producers are hands-off in their management style. This style of commenting usually consists of a form located at the end of a story or content and contains the following components: Name … -
How to stop spam on a Django blog
Don't rely on the honey pot to attract, and hold at bay, spam comments for your Django blog. Stopping spam completely for a blog built using Django takes a three-pronged approach of Akismet, date-based closing of comments and a cron-run script that removes spam comments from your database. And fortunately, all three steps are quite easy to implement. Note: I'm using Python 2.5 and Django 1.0.2 Install and enable Akismet The best front-line defense for stopping spam to your Django blog is to use Akismet via the Python API. Here are the steps: First, download akismet.py and put it on your PYTHONPATH. Then get a Akismet API key by signing up for a free Wordpress blog. Put the API key in the apikey.txt located in your Akismet directory. You'll also need to add the URL for your blog. Add this line to your Django project settings.py: AKISMET_API_KEY = '<your_api_key>' Open up your blog models.py and add the following code snippet (this will also enable e-mail notification for new, public comments): from django.contrib.comments.signals import comment_was_posted from django.utils.encoding import smart_str from django.core.mail import mail_managers import akismet from django.conf import settings from django.contrib.sites.models import Site ... def moderate_comment(sender, comment, request, **kwargs): ak = … -
RSS feed for comments on a Django blog entry
Django makes it possible to have an RSS feed for everything. Of course, possible is not always easy. Sometimes it just takes a little logic, documentation and the help of programmers much smarter than I to get things done. In this case, it means building an RSS feed for comments on individual entries on my Django blog. Prerequisites I'm using Django 1.0.2 and the contrib comments and syndication applications for this example. Creating the feed The first thing I'd recommend is checking out the Django Project documentation for creating a complex feed. This will show you how to derive objects related to another object (comments for an entry). My Django blog models.py is pretty basic: class Entry(models.Model): # Status options CLOSED_STATUS = 1 EDITING_STATUS = 2 LIVE_STATUS = 3 STATUS_CHOICES = ( (CLOSED_STATUS, 'Closed'), (EDITING_STATUS, 'Editing'), (LIVE_STATUS, 'Public'), ) # Title and slug fields title = models.CharField(max_length=200, help_text='This field will populate the slug field. Maximum 200 characters.') slug = models.SlugField(unique_for_date='pub_date') # Summary and body fields summary = models.TextField(help_text='Please use <a href="http://daringfireball.net/projects/markdown/syntax">Markdown syntax</a>.') body = models.TextField(help_text='Please use <a href="http://daringfireball.net/projects/markdown/syntax">Markdown syntax</a>.') # Markdown conversion for summary and body fields summary_html = models.TextField(editable=False, blank=True) body_html = models.TextField(editable=False, blank=True) # Tag field tags = … -
Usando o newforms do Django para gerar formulários
Esse é meu primeiro tutorial, não é extenso pois estou iniciando no Django e Python, e como eu gosto de ajudar sempre que possível eu vou compartilhar a experiência que fiz com essa classe nova do django, o newforms. Eu não vou me deter a explicar como iniciar uma aplicação nova e etc, isso já esta descrito nos tutoriais traduzidos do site da comunidade djangobrasil.org Vamos usar essas declarações: from django import newforms as formsfrom django.shortcuts import ... -
Usando NewForms com ModelForm
É isso ae! To de volta para ajudar aqueles que estão quebrando a cabeça assim como eu estava a uns dias atrás para usar essas classes do django que facilitam muito o desenvolvimento. Eu ainda estou de boca aberta com o que o Django é capaz de fazer e hoje me pergunto “porque estou desenvolvendo em Delphi, ASP.NET e C# e ainda uso Windows?” pois bem isso é meu ganha pão e infelizmente não posso parar, mas se hoje ... -
Model Referência (resumido e editado)
O model(modelo) é simples, é a fonte de dados definitiva para os seus dados. Ela contém os campos e comportamentos essenciais para os seus dados armazenados. Em geral, um model é uma tabela simples de um banco de dados. O básico:O model é uma classe Python com subclasses django.db.models.Model.Os atributos do model representam um campo no banco de dados.Model metadata (não as informações dos fields) são informadas em uma classe chamada Meta.O ... -
Novo blog, em Django!
Até que em fim meu blog esta pronto, ainda faltam alguns css, alguns tratamentos e etc mas esta ai, com muito esforço, algumas olheiras e quase “pedindo para sair” meu trabalho esta no ar!Desenvolvi o blog do zero, sem usar recursos do Django como generic-views, o que eu ganhei com isso? Conhecimento, muito conhecimento mesmo, coisa que eu não saberia usando ferramentas prontas ou que levaria um bom tempo para aprender. Foi muito prazeroso trabalhar descobrindo as maravilhas do ... -
Django Inpage 'Edit this object' link
Converting the Django bookmarklets to on page links to ease the process of editing content on a site. -
Django Simplepages - a Basic CMS System
A simple Django CMS that can be used stand alone or with your existing Django site. -
Excluindo e atualizando os dados ModelForm
OBS: Uma versão mais atualizada desse artigo esta em http://rfdev.org/2008/02/21/formularios-no-django/ Dando continuidade ao tutorial Usando NewForms com ModelForm vou complementá-lo com as funções de excluir e alterar os registros. Vamos começar pelo nosso “contatos.html” ele vai ser o único html que vamos usar, o “contatos_lista.html” não iremos mais usar então ele pode ser descartado.O “contatos.html” deve ficar como a baixo:<html> <head> <title>Newforms Django</title> </head><body> {% if nome ... -
Setting up Django on SliceHost with Ubuntu Hardy, Postgres, Apache, and Nginx
Step by step process of setting up Django on an Ubuntu Hardy slice at Slicehost. -
Configurando sua hospedagem Django + FastCGI
Vou descrever aqui os passos para se configurar uma hospedagem Django + FastCGI na TeHospedo. Acesse seu espaço no servidor de hospedagem via SSH, no Linux basta digitar no console: ssh usuario@dominioPara acessar o ssh no Windows use o PuTTY Já logado no ssh, na raiz /home/usuario/ digite mkdir django_projects e mkdir django_srcAgora vamos baixar a versão do SVN do Django, execute o comando svn co http://code.djangoproject.com/svn/django/trunk/ django_src isso ira baixar ... -
Django na TeHospedo
A TeHospedo lança oficialmente a hospedagem Django, com ótimos recursos e serviços de qualidade a TeHospedo é uma excelente escolha para hospedagem não somente de Django. O suporte deles não deixa a desejar, você quer você terá, é só ligar, mandar e-mail ou usar skype ou chat online no site, eles vão lhe atender o mais rápido possível, digo de experiência própria. Os valores são bons e batem a concorrência, certamente é a opção de hospedagem perfeita aqui no Brasil ... -
Fazendo um Middleware para pegar informações
Middleware é um framework de solicitações dentro do Django que corresponde aos processos de request/response (requisição/resposta). È simples é um “plugin” de low-level do sistema global para alterar as entradas e saídas do Django. Vamos à prática, a nossa intenção aqui é fazer um middleware para pegar as informações dos visitantes de um site para depois gerar estatísticas com as mesmas, mas essa ultima parte fica a cargo de sua imaginação. Vamos começar com o model, crie um ... -
Django Templates (editado e resumido)
A linguagem de template do Django foi designada para estabelecer um equilíbrio entre poder e facilidade. Ele foi designado para ser confortável para aqueles que trabalham com HTML. Se você já conhece outras linguagens de template como, Smarty ou CheetahTemplate, você se sentira em casa com os templates do Django. Templates O template é um arquivo texto simples. Ele pode gerar um arquivo baseado em texto formatado (HTML, XML, CSV, etc.).O template contem variáveis, quando o template é avaliado ... -
Formulários no Django
Olá pessoal, no meu ultimo artigo Excluindo e atualizando os dados ModeForm eu cometi um erro, não coloquei no artigo e nem no exemplo a função para alterar os dados, então ele fico apenas adicionando e excluindo os dados. Para corrigir isso eu vou por meio desse artigo explicar passo a passo todas as operações de um formulário básico em Django usando ModelForm.O código fonte do exemplo você pode encontrar no final desse artigo. Crie um projeto e uma ... -
Paginação no Django
Vamos falar sobre paginação de dados, algo muito usado, um exemplo de paginação esta aqui nesse blog. Ao acessar a pagina inicial você ira ver o numero de paginas e as setinhas para navegar nelas, isso foi possível graças ao ObjectPaginator, um recurso do Django para separar os dados de um objeto em paginas.Vamos ao que interessa, vamos usar a seguinte declaração:from django.core.paginator import ObjectPaginatorCom o ObjectPaginator importado vamos ao código, é o mesmo usado ...