<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Alexandre Marinho &#187; admin</title>
	<atom:link href="http://alexandre.cuboestudioweb.com/tag/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://alexandre.cuboestudioweb.com</link>
	<description>Tecnologia, Programação, Gadgets, etc...</description>
	<lastBuildDate>Fri, 05 Aug 2011 12:51:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Criando novas views para o admin</title>
		<link>http://alexandre.cuboestudioweb.com/2010/01/criando-novas-views-para-o-admin/</link>
		<comments>http://alexandre.cuboestudioweb.com/2010/01/criando-novas-views-para-o-admin/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 01:24:12 +0000</pubDate>
		<dc:creator>alexandre</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[admin]]></category>

		<guid isPermaLink="false">http://alexandre.cuboestudioweb.com/?p=109</guid>
		<description><![CDATA[Um bom tempo sem postar nada novo&#8230; porém estou de volta com uma dica simples que já usei bastante. Quem utiliza o Django com certeza adora a app admin que o acompanha, nós desenvolvedores ganhamos de presente uma administração de &#8230; <a href="http://alexandre.cuboestudioweb.com/2010/01/criando-novas-views-para-o-admin/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Um bom tempo sem postar nada novo&#8230; porém estou de volta com uma dica simples que já usei bastante.</p>
<p>Quem utiliza o Django com certeza adora a app admin que o acompanha, nós desenvolvedores ganhamos de presente uma administração de sites útil para praticamente qualquer site, e diga-se de passagem as administrações são sempre as partes mais chatas quando se produz um site.</p>
<p>Como nem tudo é perfeito, quando é necessário customizar o admin temos diversas opções, porém essa não é a intenção desse post. Quem quiser saber mais detalhes sobre customização do admin pode acessar a <a href="http://docs.djangoproject.com/en/1.1/" target="_blank">documentação do django</a> e essa <a href="http://www.ibm.com/developerworks/opensource/library/os-django-admin/index.html" target="_self">página da IBM</a>.</p>
<p>O nosso caso é diferente, existem situações em que precisamos criar novas funcionalidades específicas para a administracao (não estão relacionadas a nenhum model), mantendo o layout e as restrições de acesso.</p>
<p>O primeiro passo é criar a view:</p>
<pre><code>from django.shortcuts import render_to_response
from django.template import RequestContext</code>

def minha_view(request):
    #executa alguma funcionalidade
    return render_to_response('app/minha_view.html',locals(),request_instance=RequestContext(request))
</pre>
<p>Note que a view acima é igual a qualquer outra que se faz normalmente.<br />
Em seguida definimos uma url para nossa view:</p>
<pre><code>urlpatterns = patterns('',
    (r'^admin/admin_view','app.views.minha_view'),
    (r'^admin/', include(admin.site.urls)),
)
</code></pre>
<p>Eu preciso definir a minha url antes da url do admin, se ela for colocada após o admin a view não é encontrada. Cuidado para não sobrepor nenhuma view já existente do admin.</p>
<p>Agora criamos o template minha_view.html:</p>
<pre><code>{% extends 'admin/base_site.html' %}
{% block content %}
Aqui ficarão os dados da sua view
{% endblock %}
</code></pre>
<p>O template acima é muito simples, caso queira fazer algo mais sofisticado (como css, breadcrumbs e forms) sugiro olhar os templates padrões do admin. Eles podem ser encontrados em: %DJANGO_DIR%/contrib/admin/templates/admin.</p>
<p>Pronto, sua view já possui a &#8216;cara&#8217; do admin. Porém ela pode ser acessada por qualquer usuário, até mesmo os logados.</p>
<p>O passo natural seria usar o decorator <em>login_required</em> para exigir o login, so que por algum motivo desconhecido os redirecionamentos do admin não combinam muito bem com views externas. Nesso caso a solução é transformar a nossa view numa view do admin, para isso editamos o urls.py:</p>
<pre><code>from django.contrib import admin
from app.views import minha_view

urlpatterns = patterns('',
    (r'^admin/admin_view',admin.site.admin_view(minha_view),
    (r'^admin/', include(admin.site.urls)),
)
</code></pre>
<p>Pronto sua view está protegida de acessos anônimos e todos os redirecionamentos funcionam corretamente.<br />
Agora é só criar suas novas funcionalidades embutidas diretamente no admin.</p>
<p>Espero ter ajudado. Até a próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexandre.cuboestudioweb.com/2010/01/criando-novas-views-para-o-admin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

