.. .. META INFORMATION OF TRANSLATION .. .. $TranslationStatus: Done, waiting for revision $ .. $OriginalRevision: 11348 $ .. $TranslationAuthors: Robson Mendonça, Renato Garcia Pedigoni $ .. .. INFO OF THIS FILE (DO NOT EDIT! UPDATED BY SUBVERSION) .. .. $HeadURL$ .. $LastChangedRevision$ .. $LastChangedBy$ .. $LastChangedDate$ .. ===================== A aplicação Flatpages ===================== .. module:: django.contrib.flatpages :synopsis: Um framework para gerenciar simples ?plano? conteúdo HTML em um banco de dados. Django traz embutido uma aplicação opcional "flatpages". Ela permite você armazenar conteúdo HTML em um banco de dados e toma conta do gerenciamento para você por meio administração do Django e uma API do Python. Uma flatpage é um simples objeto com uma URL, título e conteúdo. Utilize-a para páginas únicas, customizadas, como "Quem somos" ou "Política de Privacidade", que você quer armazenar no banco de dados, porém não quer desenvolver uma aplicação Django exclusiva para isso. Uma flatpage pode tanto utilizar um template customizado como também um template padrão para todas as flatpages do sistema. Pode estar associada com um ou vários sites. .. versionadded:: 1.0 O campo conteúdo pode opcionalmente ser deixado em branco caso você prefira colocá-lo em um template customizado. Alguns exemplos de flatpages em sites desenvolvidos com Django: * http://www.lawrence.com/about/contact/ * http://www2.ljworld.com/site/rules/ Instalação ========== Para instalar a aplicação flatpages, siga os passos abaixo: 1. Instale o :mod:`framework sites ` adicionando ``'django.contrib.sites'`` em seu :setting:`INSTALLED_APPS`, se ele ainda não estiver lá. Also make sure you've correctly set :setting:`SITE_ID` to the ID of the site the settings file represents. This will usually be ``1`` (i.e. ``SITE_ID = 1``, but if you're not using the sites framework to manage multiple sites, it could be the ID of a different site. 2. Adicione ``'django.contrib.flatpages'`` em seu :setting:`INSTALLED_APPS`. 3. Adicione ``'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'`` em seu :setting:`MIDDLEWARE_CLASSES`. 4. Execute o comando :djadmin:`manage.py syncdb `. Como funciona ============= ``manage.py syncdb`` cria duas tabelas em seu banco de dados: ``django_flatpage`` e ``django_flatpage_sites``. ``django_flatpage`` é uma tabela comum que simplesmente mapeia a URL para um título e um punhado de texto. ``django_flatpage_sites`` associa uma flatpage a um site. O :class:`~django.contrib.flatpages.middleware.FlatpageFallbackMiddleware` faz todo o trabalho. Toda vez que qualquer aplicação Django chamar um erro 404, este middleware verifica se existe alguma flatpage no banco de dados mapeada para a URL requisitada como um último recurso. Mais especificamente, ele procura por uma flatpage com a URL requisitada e o ID do site que corresponda com a variável :setting:`SITE_ID` no arquivo :doc:`settings.py `. Se encontrar uma combinação, ele segue o seguinte algorítmo: * Se a flatpage tiver um template customizado, ele carrega esse template. Caso contrário carrega o template :file:`flatpages/default.html`. * Ele passa ao template uma única variável de contexto, :data:`flatpage`, que é um objeto do tipo flatpage. Ele utiliza a classe :class:`~django.template.context.RequestContext` na renderização do template. Se não encontrar uma combinação, a requisição continua a ser processada normalmente. O middleware só é ativado para erros 404 -- não para erros 500 ou respostas de qualquer outro código de status. Note que a ordem de :setting:`MIDDLEWARE_CLASSES` importa. Geralmente você pode incluir a classe :class:`~django.contrib.flatpages.middleware.FlatpageFallbackMiddleware` no fim da lista, pois ele é um último recurso. Para saber mais sobre middleware, leia a :doc':`documentação do middleware `. .. admonition:: Tenha certeza de que seu template de erro 404 está funcionando. Note que a classe :class:`~django.contrib.flatpages.middleware.FlatpageFallbackMiddleware` só é chamado caso uma view tenha sucesso ao produzir um erro 404. Se outra view ou classe middleware tentar produzir um erro 404, porém não conseguir e terminar lançando uma exceção (como por exemplo ``TemplateDoesNotExist``, caso seu site não possua um template apropriado para respostas HTTP 404), a resposta se tornará um erro HTTP 500 ("Erro Interno de Servidor") e o :class:`~django.contrib.flatpages.middleware.FlatpageFallbackMiddleware` não tentará servir uma flatpage. Como adicionar, alterar e excluir flatpages =========================================== Pela interface de administração ------------------------------- Se você ativou a administração automática do Django, você deverá ver uma seção "Flatpages" na página inicial da administração. Altere as flatpages como você alteraria qualquer outro objeto no sistema. Usando a API do Python ---------------------- .. class:: models.FlatPage Flatpages são representadas por um :doc:`modelo Django `, que fica armazenado em `django/contrib/flatpages/models.py`_. Você pode acessar objetos do tipo flatpage pela :doc:`API de banco de dados do Django `. .. _django/contrib/flatpages/models.py: http://code.djangoproject.com/browser/django/trunk/django/contrib/flatpages/models.py Templates das Flatpages ======================= Por padrão, flatpages são renderizadas pelo template :file:`flatpages/default.html`, mas você pode sobrescrevê-lo por uma flatpage particular. Criar o template :file:`flatpages/default.html` é sua responsabilidade; em seu diretório de templates, crie uma pasta chamada :file:`flatpages` contendo um arquivo chamado :file:`default.html`. Para os templates das flatpages é passado apenas uma variável de contexto, :data:`flatpage`, que é o objeto flatpage. Segue abaixo um exemplo de template para :file:`flatpages/default.html`: .. code-block:: html+django {{ flatpage.title }} {{ flatpage.content }} Uma vez que você já está inserindo código HTML puro na administração para uma flatpage, tanto ``flatpage.title`` como ``flatpage.content`` **não** necessitam de :ref:`escaping automático de HTML ` no template.