<?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>salsotto.com » difundindo ideias na web &#187; Django</title>
	<atom:link href="http://blog.salsotto.com/category/django/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.salsotto.com</link>
	<description>Quando uma boa ideia acontece e seu comodismo a desperdiça, você estará em dívida contigo e com a humanidade.&#34; ( Ivan Teorilang )</description>
	<lastBuildDate>Mon, 09 Jan 2012 03:01:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Requisições ajax com Django e jQuery &#8211; 1ª parte</title>
		<link>http://blog.salsotto.com/2011/09/16/requisicoes-ajax-com-django-e-jquery-1-parte/</link>
		<comments>http://blog.salsotto.com/2011/09/16/requisicoes-ajax-com-django-e-jquery-1-parte/#comments</comments>
		<pubDate>Fri, 16 Sep 2011 16:14:43 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=826</guid>
		<description><![CDATA[Pretendo publicar uma série de 3 posts exemplificando a utilização de dois excelentes frameworks dos quais faço uso constante no meu dia-a-dia, o&#160; Django e o jQuery. A ideia parte da premissa de realizar requisições ajax e propiciar um desenvolvimento rápido para alguns problemas. É importante frisar que as soluções apresentadas podem ser facilmente implementadas [...]]]></description>
			<content:encoded><![CDATA[<p>Pretendo publicar uma série de 3 posts exemplificando a utilização de dois excelentes frameworks dos quais faço uso constante no meu dia-a-dia, o&nbsp; <a href="www.djangoproject.com/" target="_blank">Django</a> e o <a href="http://jquery.com/" target="_blank">jQuery</a>. A ideia parte da premissa de realizar requisições ajax e propiciar um desenvolvimento rápido para alguns problemas. É importante frisar que as soluções apresentadas podem ser facilmente implementadas também em outras linguagens.</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="HTML"><div class="devcodeoverflow"><ol><li><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span></li><li>&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;{{MEDIA_URL}}js/jquery.js&quot;</span>&gt;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#escola'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">change</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>					</li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;idEscola <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#escola'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">val</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'/professores/escola/'</span> <span style="color: #339933;">+</span> idEscola <span style="color: #339933;">+</span> <span style="color: #3366CC;">'/'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>resposta<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#listaProfessor'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#listaProfessor'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">prepend</span><span style="color: #009900;">&#40;</span>resposta<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#listaProfessor'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></li><li>&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;avaliacaoForm&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;avaliacaoForm&quot;</span> <span style="color: #000066;">method</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;post&quot;</span> <span style="color: #000066;">action</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span>&gt;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;selecaoEscola&quot;</span>&gt;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">label</span> <span style="color: #000066;">for</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;escola&quot;</span>&gt;</span>Selecione uma escola:<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">label</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">br</span><span style="color: #66cc66;">/</span>&gt;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">select</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;escola&quot;</span>&gt;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">option</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;0&quot;</span>&gt;</span>- - - - - - - - -<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">option</span>&gt;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{% for escola in escolas %}</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">option</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;{{escola.id}}&quot;</span>&gt;</span>{{escola.nome}}<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">option</span>&gt;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{% endfor %}</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">select</span>&gt;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">table</span> <span style="color: #000066;">width</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;700&quot;</span> <span style="color: #000066;">border</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;listaProfessor&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;display:none&quot;</span>&gt;</span>					</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">table</span>&gt;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">form</span>&gt;</span></li><li>&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span></li><li><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>&nbsp;</p>
<p>Template do selectbox.</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="HTML"><div class="devcodeoverflow"><ol><li>{% if professores %}</li><li>&nbsp;</li><li>&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">tr</span>&gt;</span>	</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">th</span> <span style="color: #000066;">scope</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;col&quot;</span>&gt;</span>PROFESSOR<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">th</span>&gt;</span>	</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">th</span> <span style="color: #000066;">scope</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;col&quot;</span> <span style="color: #000066;">colspan</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;2&quot;</span>&gt;</span>AÇÕES<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">th</span>&gt;</span>	</li><li>&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">tr</span>&gt;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;{% for professor in professores%}</li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">tr</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;linha&quot;</span>&gt;</span>	</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">td</span>&gt;</span>{{professor}}<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">td</span>&gt;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">td</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;{% url editar&nbsp;&nbsp;idProfessor=professor.id %}&quot;</span>&gt;</span>Editar<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">td</span>&gt;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">td</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;{% url deletar idProfessor=professor.id %}&quot;</span>&gt;</span>Deletar<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">td</span>&gt;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">tr</span>&gt;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;{% endfor %}</li><li>&nbsp;</li><li>{% else %}</li><li>&nbsp;</li><li>&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">tr</span>&gt;</span>	</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">th</span> <span style="color: #000066;">scope</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;col&quot;</span>&gt;</span>NÃO HÁ PROFESSORES CADASTRADOS<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">th</span>&gt;</span></li><li>&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">tr</span>&gt;</span></li><li>&nbsp;</li><li>{% endif %}</li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>&nbsp;</p>
<p>Retorna para o template o contexto via ajax.</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Python"><div class="devcodeoverflow"><ol><li><span style="color: #808080; font-style: italic;">#bibliotecas django</span></li><li><span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">template</span> <span style="color: #ff7700;font-weight:bold;">import</span> RequestContext, Context</li><li>&nbsp;</li><li><span style="color: #ff7700;font-weight:bold;">def</span> changeProfessor<span style="color: black;">&#40;</span>request, idEscola<span style="color: black;">&#41;</span>:</li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #483d8b;">''</span><span style="color: #483d8b;">'</span></li><li><span style="color: #483d8b;">&nbsp;&nbsp;&nbsp;&nbsp;view: changeProfessor</span></li><li><span style="color: #483d8b;">&nbsp;&nbsp;&nbsp;&nbsp;descricao: carrega a lista de professores ao selecionar outra escola (ajax)</span></li><li><span style="color: #483d8b;">&nbsp;&nbsp;&nbsp;&nbsp;'</span><span style="color: #483d8b;">''</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;professores = Professor.<span style="color: black;">objects</span>.<span style="color: #008000;">filter</span><span style="color: black;">&#40;</span>escola=idEscola<span style="color: black;">&#41;</span>.<span style="color: black;">order_by</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'nome'</span><span style="color: black;">&#41;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; font-style: italic;">#contexto para renderizar na pagina</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;contexto = Context<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;contexto<span style="color: black;">&#91;</span><span style="color: #483d8b;">'professores'</span><span style="color: black;">&#93;</span> = professores</li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; font-style: italic;">#retorna o contexto para o template</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">return</span> render_to_response<span style="color: black;">&#40;</span><span style="color: #483d8b;">'professor.html'</span>, contexto, context_instance=RequestContext<span style="color: black;">&#40;</span>request<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>&nbsp;&nbsp;&nbsp;&nbsp;</li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2011/09/16/requisicoes-ajax-com-django-e-jquery-1-parte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Onde hospedar meu projeto em Django? #webfaction</title>
		<link>http://blog.salsotto.com/2011/08/27/onde-hospedar-meu-projeto-em-django-webfaction/</link>
		<comments>http://blog.salsotto.com/2011/08/27/onde-hospedar-meu-projeto-em-django-webfaction/#comments</comments>
		<pubDate>Sat, 27 Aug 2011 10:35:53 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=855</guid>
		<description><![CDATA[Farei algumas observações rapidamente sobre o excelente serviço de hospedagem oferecido pela WebFaction, o qual eu já utilizo a pouco mais de um ano juntamente com meu grande amigo Diogo Ximenes de Moura. Tomamos conhecimento da WebFaction após frustrantes experiências com empresas de hospedagens brasileiras que ofereciam suporte ao Django na época.
Ficamos absurdamente contentes com [...]]]></description>
			<content:encoded><![CDATA[<p>Farei algumas observações rapidamente sobre o excelente serviço de hospedagem oferecido pela <a href="http://www.webfaction.com/" target="_blank">WebFaction</a>, o qual eu já utilizo a pouco mais de um ano juntamente com meu grande amigo <a href="http://twitter.com/#!/DKalifor" target="_blank">Diogo Ximenes de Moura</a>. Tomamos conhecimento da WebFaction após frustrantes experiências com empresas de hospedagens brasileiras que ofereciam suporte ao Django na época.</p>
<p>Ficamos absurdamente contentes com o serviço provido pela empresa em todos os aspectos:</p>
<ul>
<li>Praticidade</li>
<li>Custo</li>
<li>Suporte</li>
<li>Infraestrutura</li>
</ul>
<p>Sem sombra de dúvidas, a WebFaction deixa muitas outras no chinelo. Para fechar com chave de ouro, recomendo que assistam esse <a href="http://www.youtube.com/watch?v=YI_2l6rc5Kw&amp;feature=player_embedded" target="_blank">vídeo-tutorial</a> de como fazer deploy de um projeto Django.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2011/08/27/onde-hospedar-meu-projeto-em-django-webfaction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mod_mime_magic: invalid type 0 in mconvert()</title>
		<link>http://blog.salsotto.com/2011/08/26/mod_mime_magic-invalid-type-0-in-mconvert/</link>
		<comments>http://blog.salsotto.com/2011/08/26/mod_mime_magic-invalid-type-0-in-mconvert/#comments</comments>
		<pubDate>Sat, 27 Aug 2011 01:15:36 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=861</guid>
		<description><![CDATA[No desenvolvimento em Django é comum usar o famoso &#8220;print&#8221; para debugar em ambiente de desenvolvimento com o servidor local provido. No entanto, muitas vezes depois de solucionado o problema, esquecemos de remover os benditos &#8220;prints&#8221; e acabamos subindo-os juntamente com o resto do projeto para produção.
É ai que ta a meleca! Nos servidores de [...]]]></description>
			<content:encoded><![CDATA[<p>No desenvolvimento em Django é comum usar o famoso &#8220;print&#8221; para debugar em ambiente de desenvolvimento com o servidor local provido. No entanto, muitas vezes depois de solucionado o problema, esquecemos de remover os benditos &#8220;prints&#8221; e acabamos subindo-os juntamente com o resto do projeto para produção.</p>
<p>É ai que ta a meleca! Nos servidores de produção não é possível debugar dessa maneira, e na maioria dos mesmos retornam uma mensagem no log &#8220;<em>mod_mime_magic: invalid type 0 in mconvert()</em>&#8220;. Refatore seu código removendo tudo que é &#8220;print&#8221; e suba novamente seu projeto.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2011/08/26/mod_mime_magic-invalid-type-0-in-mconvert/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mostrar valores de campos com &#8220;choices&#8221;</title>
		<link>http://blog.salsotto.com/2011/08/16/mostrar-valores-de-campos-com-choices/</link>
		<comments>http://blog.salsotto.com/2011/08/16/mostrar-valores-de-campos-com-choices/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 17:01:20 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=814</guid>
		<description><![CDATA[Trabalhar com os &#8220;choices&#8221;&#160; é uma mão na roda, principalmente por não ser necessário criar tabelas muitas vezes desnecessárias para o modelo. Nos tutoriais do Django, é mostrado a criação dos choices dentro do escopo do próprio model, porém alguns choices podem ser de uso geral para outros models. Para essa problema, sempre crio um [...]]]></description>
			<content:encoded><![CDATA[<p>Trabalhar com os &#8220;choices&#8221;&nbsp; é uma mão na roda, principalmente por não ser necessário criar tabelas muitas vezes desnecessárias para o modelo. Nos tutoriais do Django, é mostrado a criação dos choices dentro do escopo do próprio model, porém alguns choices podem ser de uso geral para outros models. Para essa problema, sempre crio um arquivo chamado choices.py dentro da minha &#8220;app&#8221;&nbsp; e nos models eu dou um import nos choices necessários.</p>
<p>No exemplo a seguir, vou seguir como o Django demonstra:</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Python"><div class="devcodeoverflow"><ol><li><span style="color: #ff7700;font-weight:bold;">class</span> Funcionario<span style="color: black;">&#40;</span>models.<span style="color: black;">Model</span><span style="color: black;">&#41;</span>:</li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;SEXO = <span style="color: black;">&#40;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: black;">&#40;</span><span style="color: #483d8b;">'M'</span>, <span style="color: #483d8b;">'Masculino'</span><span style="color: black;">&#41;</span>,</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: black;">&#40;</span><span style="color: #483d8b;">'F'</span>, <span style="color: #483d8b;">'Feminino'</span><span style="color: black;">&#41;</span>,</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: black;">&#41;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;nome = models.<span style="color: black;">Charfield</span><span style="color: black;">&#40;</span>max_length=<span style="color: #ff4500;">100</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;sexo = models.<span style="color: black;">CharField</span><span style="color: black;">&#40;</span>max_length=<span style="color: #ff4500;">1</span>, choices=SEXO<span style="color: black;">&#41;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>Repare que o choices nada mais é que uma tupla de valores, no qual o primeiro valor é que realmente será salvo no banco de dados, e o segundo o valor de exibição nos campos combobox. O admin do Django por si só já cuida da visualização correta dos valores na tupla, porém quando se trabalha diretamente nos templates há um pequeno &#8220;macete&#8221; para que consiga apresentar o valor de exibição correto.</p>
<p>Caso tente acessar o valor da seguinte maneira, aparecerá apenas os valores &#8220;M&#8221; ou &#8220;F&#8221;.</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="HTML"><div class="devcodeoverflow"><ol><li>{{funcionario.sexo}}</li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>Para conseguir o resultado &#8220;Masculino&#8221; ou &#8220;Feminino&#8221; teremos que acessá-lo assim:</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="HTML"><div class="devcodeoverflow"><ol><li>{{funcionario.get_sexo_display}}</li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>Assim você conseguirá acessar a respectiva informação do sexo da &#8220;criatura&#8221; rs</p>
<p>Abs</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2011/08/16/mostrar-valores-de-campos-com-choices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Filter através de campos checkbox</title>
		<link>http://blog.salsotto.com/2011/08/15/filter-atraves-de-campos-checkbox/</link>
		<comments>http://blog.salsotto.com/2011/08/15/filter-atraves-de-campos-checkbox/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 14:12:13 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=774</guid>
		<description><![CDATA[Quando se trabalha com campos checkbox, o Django proporciona uma maneira muito simples de tratar esse tipo de informação quando é feito o request. Vou mostrar uma solução rápida para isso.
Para idealizar a solução, pensemos em uma listagem de avaliações de alunos na qual é renderizada em&#160; uma tabela com duas colunas:&#160;

Checkbox
Nome do aluno

{% for [...]]]></description>
			<content:encoded><![CDATA[<p>Quando se trabalha com campos checkbox, o Django proporciona uma maneira muito simples de tratar esse tipo de informação quando é feito o request. Vou mostrar uma solução rápida para isso.</p>
<p>Para idealizar a solução, pensemos em uma listagem de avaliações de alunos na qual é renderizada em&nbsp; uma tabela com duas colunas:&nbsp;</p>
<ul>
<li>Checkbox</li>
<li>Nome do aluno</li>
</ul>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="HTML"><div class="devcodeoverflow"><ol><li>{% for avaliacao in avaliacoes %}			</li><li><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">tr</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;linha&quot;</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;avaliacao-{{avaliacao.id}}&quot;</span>&gt;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">td</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;checkbox&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;avaliacoes&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;{{avaliacao.id}}&quot;</span><span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">td</span>&gt;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">td</span>&gt;</span>{{avaliacao.aluno}}<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">td</span>&gt;</span></li><li><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">tr</span>&gt;</span></li><li>{% endfor %}</li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>Para&nbsp; obtermos o resultado da seleção na view fazemos da seguinte maneira:</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Python"><div class="devcodeoverflow"><ol><li>avaliacoes = Avaliacao.<span style="color: black;">objects</span>.<span style="color: #008000;">filter</span><span style="color: black;">&#40;</span>id__in=request.<span style="color: black;">POST</span>.<span style="color: black;">getlist</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'avaliacoes'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>Fica mais essa dica simples!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2011/08/15/filter-atraves-de-campos-checkbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Queryset por range de idade</title>
		<link>http://blog.salsotto.com/2011/08/12/queryset-por-range-de-idade/</link>
		<comments>http://blog.salsotto.com/2011/08/12/queryset-por-range-de-idade/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 18:51:33 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=769</guid>
		<description><![CDATA[Partindo do ponto que o range de idades virá através de um request, no qual você terá que tratar os dados devidamente realizando um &#8220;casting&#8221; em ambas as idades (idade_min e idade_max), mostro abaixo apenas a lógica para realizar o filtro esperado.
from datetime import date, timedelta&#160;dataAtual = date.today&#40;&#41;&#160;data_inicio&#160;&#160;= date&#40;dataAtual.year - idade_max - 1, dataAtual.month, dataAtual.day&#41; [...]]]></description>
			<content:encoded><![CDATA[<p>Partindo do ponto que o range de idades virá através de um request, no qual você terá que tratar os dados devidamente realizando um &#8220;casting&#8221; em ambas as idades (idade_min e idade_max), mostro abaixo apenas a lógica para realizar o filtro esperado.</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Python"><div class="devcodeoverflow"><ol><li><span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">datetime</span> <span style="color: #ff7700;font-weight:bold;">import</span> date, timedelta</li><li>&nbsp;</li><li>dataAtual = date.<span style="color: black;">today</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></li><li>&nbsp;</li><li>data_inicio&nbsp;&nbsp;= date<span style="color: black;">&#40;</span>dataAtual.<span style="color: black;">year</span> - idade_max - 1, dataAtual.<span style="color: black;">month</span>, dataAtual.<span style="color: black;">day</span><span style="color: black;">&#41;</span> + timedelta<span style="color: black;">&#40;</span>days = 1<span style="color: black;">&#41;</span></li><li>date_termino = date<span style="color: black;">&#40;</span>dataAtual.<span style="color: black;">year</span> - idade_min, dataAtual.<span style="color: black;">month</span>, dataAtual.<span style="color: black;">day</span><span style="color: black;">&#41;</span></li><li>&nbsp;</li><li>funcionarios = Funcionario.<span style="color: black;">objects</span>.<span style="color: #008000;">filter</span><span style="color: black;">&#40;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;data_aniversario__gt&nbsp;&nbsp;= data_inicio,</li><li>&nbsp;&nbsp;&nbsp;&nbsp;data_aniversario__lte = date_termino,</li><li><span style="color: black;">&#41;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2011/08/12/queryset-por-range-de-idade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adiantando seu lado com os &#8220;context processors&#8221;</title>
		<link>http://blog.salsotto.com/2011/08/10/adiantando-seu-lado-com-os-context-processors/</link>
		<comments>http://blog.salsotto.com/2011/08/10/adiantando-seu-lado-com-os-context-processors/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 12:01:48 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=792</guid>
		<description><![CDATA[Não faz muito tempo participava de um projeto &#8220;freela&#8221; juntamente com meu amigo Fred Chevitarese (passamos natal e ano novo trabalhando&#8230; #tenso) no qual precisávamos criar um portal para uma agência de marketing criativo e publicação multiplataforma.
Foi nesse momento que tomei conhecimento de mais um dos recursos fantásticos provenientes&#160; do Django&#8230; os &#8220;context processors&#8221; o [...]]]></description>
			<content:encoded><![CDATA[<p>Não faz muito tempo participava de um projeto &#8220;freela&#8221; juntamente com meu amigo <a href="http://chevitarese.wordpress.com/" target="_blank">Fred Chevitarese</a> (passamos natal e ano novo trabalhando&#8230; #tenso) no qual precisávamos criar um portal para uma agência de marketing criativo e publicação multiplataforma.</p>
<p>Foi nesse momento que tomei conhecimento de mais um dos recursos fantásticos provenientes&nbsp; do Django&#8230; os &#8220;context processors&#8221; o que adiantou muito meu lado na hora de desenvolver o front-end do portal.</p>
<p>Abaixo vou explanar rapidademente com um exemplo básico o uso de um context processor.</p>
<p>Primeiramente, em seu arquivo settings.py procure pela tupla TEMPLATE_CONTEXT_PROCESSORS (usada para preencher o contexto nos templates) e ao final da mesma adicione o caminho do seu context processor:</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Python"><div class="devcodeoverflow"><ol><li>TEMPLATE_CONTEXT_PROCESSORS = <span style="color: black;">&#40;</span></li><li> <span style="color: #483d8b;">'django.core.context_processors.auth'</span>,</li><li> <span style="color: #483d8b;">'django.core.context_processors.debug'</span>,</li><li> <span style="color: #483d8b;">'django.core.context_processors.i18n'</span>,</li><li> <span style="color: #483d8b;">'django.core.context_processors.media'</span>,</li><li> <span style="color: #483d8b;">'django.core.context_processors.request'</span>,</li><li> <span style="color: #483d8b;">'project.utils.context_processors.currentYear'</span>,</li><li><span style="color: black;">&#41;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>Crie um arquivo chamado context_processors.py (ou o nome que preferir) e vamos desenvolver nosso processor que retorna o ano atual.</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Python"><div class="devcodeoverflow"><ol><li><span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">datetime</span> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">datetime</span></li><li>&nbsp;</li><li><span style="color: #ff7700;font-weight:bold;">def</span> currentYear<span style="color: black;">&#40;</span>request<span style="color: black;">&#41;</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#123;</span><span style="color: #483d8b;">'year'</span>: <span style="color: #dc143c;">datetime</span>.<span style="color: black;">now</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">year</span>,<span style="color: black;">&#125;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>Com o context processor criado e configurado em nosso settings.py, não é preciso fazer mais nada, simplesmente acessá-lo no template:</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="HTML"><div class="devcodeoverflow"><ol><li><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;footer&quot;</span>&gt;</span> 2010-{{year}} Todos direitos reservados <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>É importante frisar que pode-se trabalhar com querysets e retorná-los ao template também!</p>
<p>Abs</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2011/08/10/adiantando-seu-lado-com-os-context-processors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criando um Tag Cloud no Django</title>
		<link>http://blog.salsotto.com/2011/08/09/criando-um-tag-cloud-no-django/</link>
		<comments>http://blog.salsotto.com/2011/08/09/criando-um-tag-cloud-no-django/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 10:01:41 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=763</guid>
		<description><![CDATA[Deixo aqui uma solução que implementei em Django com base em um script PHP que vi na internet (lamento mas não me lembro do link).
Primeiramente criamos a&#160; função na qual recebe um queryset de tags mais clicadas e percorre todos os itens realizando um cálculo de porcentagem para definição dos tamanhos das &#8220;tags&#8221; a cada [...]]]></description>
			<content:encoded><![CDATA[<p>Deixo aqui uma solução que implementei em Django com base em um script PHP que vi na internet (lamento mas não me lembro do link).</p>
<p>Primeiramente criamos a&nbsp; função na qual recebe um queryset de tags mais clicadas e percorre todos os itens realizando um cálculo de porcentagem para definição dos tamanhos das &#8220;tags&#8221; a cada item percorrido e adicionado um determinado código html a uma nova lista. No final, ao percorrer todos os itens e preencher toda a lista, embaralhamos a lista e retornamos o resultado.</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Python"><div class="devcodeoverflow"><ol><li><span style="color: #ff7700;font-weight:bold;">def</span> tagCloud<span style="color: black;">&#40;</span>tagList<span style="color: black;">&#41;</span>:</li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;maximum = 0</li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;tags = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">for</span> tagItem <span style="color: #ff7700;font-weight:bold;">in</span> tagList:</li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">if</span> tagItem.<span style="color: black;">view</span> <span style="color: #66cc66;">&gt;</span> maximum:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maximum = tagItem.<span style="color: black;">view</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;percent = <span style="color: black;">&#40;</span>1.0 <span style="color: #66cc66;">*</span> tagItem.<span style="color: black;">view</span> / maximum<span style="color: black;">&#41;</span> <span style="color: #66cc66;">*</span> 100</li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">if</span> percent <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">15</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tags.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'&lt;a href=&quot;%s/tag/%s/&quot; class=&quot;f10&quot;&gt;%s&lt;/a&gt;'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>base_url, tagItem.<span style="color: black;">slug</span>, tagItem<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">elif</span> percent <span style="color: #66cc66;">&gt;</span>= 15 <span style="color: #ff7700;font-weight:bold;">and</span> percent <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">30</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tags.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'&lt;a href=&quot;%s/tag/%s/&quot; class=&quot;f12&quot;&gt;%s&lt;/a&gt;'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>base_url, tagItem.<span style="color: black;">slug</span>, tagItem<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">elif</span> percent <span style="color: #66cc66;">&gt;</span>= 30 <span style="color: #ff7700;font-weight:bold;">and</span> percent <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">45</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tags.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'&lt;a href=&quot;%s/tag/%s/&quot; class=&quot;f15&quot;&gt;%s&lt;/a&gt;'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>base_url, tagItem.<span style="color: black;">slug</span>, tagItem<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">elif</span> percent <span style="color: #66cc66;">&gt;</span>= 45 <span style="color: #ff7700;font-weight:bold;">and</span> percent <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">60</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tags.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'&lt;a href=&quot;%s/tag/%s/&quot; class=&quot;f18&quot;&gt;%s&lt;/a&gt;'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>base_url, tagItem.<span style="color: black;">slug</span>, tagItem<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">elif</span> percent <span style="color: #66cc66;">&gt;</span>= 60 <span style="color: #ff7700;font-weight:bold;">and</span> percent <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">75</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tags.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'&lt;a href=&quot;%s/tag/%s/&quot; class=&quot;f20&quot;&gt;%s&lt;/a&gt;'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>base_url, tagItem.<span style="color: black;">slug</span>, tagItem<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">elif</span> percent <span style="color: #66cc66;">&gt;</span>= 75 <span style="color: #ff7700;font-weight:bold;">and</span> percent <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">90</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tags.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'&lt;a href=&quot;%s/tag/%s/&quot; class=&quot;f24&quot;&gt;%s&lt;/a&gt;'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>base_url, tagItem.<span style="color: black;">slug</span>, tagItem<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">else</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tags.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'&lt;a href=&quot;%s/tag/%s/&quot; class=&quot;f26&quot;&gt;%s&lt;/a&gt;'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>base_url, tagItem.<span style="color: black;">slug</span>, tagItem<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shuffle<span style="color: black;">&#40;</span>tags<span style="color: black;">&#41;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">return</span> tags</li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>Na sua view, basta pegar um queryset das tags mais visitadas e passá-lo como parâmetro na função tagCloud e enviar juntamente com o contexto da sua view.</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Python"><div class="devcodeoverflow"><ol><li><span style="color: #808080; font-style: italic;">#lista de tags mais visitadas</span></li><li>tagList = Tag.<span style="color: black;">objects</span>.<span style="color: #008000;">all</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">order_by</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'-view'</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span>:<span style="color: #ff4500;">18</span><span style="color: black;">&#93;</span></li><li>&nbsp;</li><li><span style="color: #808080; font-style: italic;">#monta o tagcloud</span></li><li>tags = tagCloud<span style="color: black;">&#40;</span>tagList<span style="color: black;">&#41;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>No final basta renderizar em seu template como parte do contexto {{tags}}.</p>
<p>Abs</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2011/08/09/criando-um-tag-cloud-no-django/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Herança de modelos no Django</title>
		<link>http://blog.salsotto.com/2011/08/08/heranca-de-modelos-no-django/</link>
		<comments>http://blog.salsotto.com/2011/08/08/heranca-de-modelos-no-django/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 13:04:30 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=752</guid>
		<description><![CDATA[A herança de modelos do Django consiste no mesmo conceito de &#8220;Herança&#8221; em orientação a objetos, onde uma classe &#8220;herde&#8221; os atributos e métodos de uma outra classe, podendo reescrevê-los ou adicionar funcionalidade à estes. É desse mesmo modo que ganhamos a praticidade na criação dos modelos no Django.
No exemplo abaixo criei um modelo &#8220;padrão&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>A herança de modelos do Django consiste no mesmo conceito de &#8220;Herança&#8221; em orientação a objetos, onde uma classe &#8220;herde&#8221; os atributos e métodos de uma outra classe, podendo reescrevê-los ou adicionar funcionalidade à estes. É desse mesmo modo que ganhamos a praticidade na criação dos modelos no Django.</p>
<p>No exemplo abaixo criei um modelo &#8220;padrão&#8221; de cadastro de notícias que possui os dados básicos de uma notícia. Posteriormente crio um modelo Magazine no qual herda do modelo padrão os atributos e metódos e adicionando os atributos especifícos do modelo. Essa prática proporciona inúmeras linhas de código a menos e melhor manutenção em seu código.</p>
<p>Fica mais essa dica!</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Python"><div class="devcodeoverflow"><ol><li><span style="color: #ff7700;font-weight:bold;">class</span> DefaultModel<span style="color: black;">&#40;</span>models.<span style="color: black;">Model</span><span style="color: black;">&#41;</span>:</li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;title = models.<span style="color: black;">CharField</span><span style="color: black;">&#40;</span>u<span style="color: #483d8b;">'Title'</span>, max_length = <span style="color: #ff4500;">60</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;teaser = models.<span style="color: black;">TextField</span><span style="color: black;">&#40;</span>u<span style="color: #483d8b;">'Teaser'</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;pubDate = models.<span style="color: black;">DateTimeField</span><span style="color: black;">&#40;</span>u<span style="color: #483d8b;">'Publication date'</span>, default=<span style="color: #dc143c;">datetime</span>.<span style="color: black;">now</span><span style="color: black;">&#41;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__unicode__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.<span style="color: black;">title</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">def</span> get_absolute_url<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #483d8b;">&quot;/%s/%s/&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: #008000;">type</span>, <span style="color: #008000;">self</span>.<span style="color: black;">slug</span><span style="color: black;">&#41;</span></li><li>&nbsp;</li><li>&nbsp;</li><li><span style="color: #ff7700;font-weight:bold;">class</span> Magazine<span style="color: black;">&#40;</span>DefaultModel<span style="color: black;">&#41;</span>:</li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">class</span> Meta:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;verbose_name = u<span style="color: #483d8b;">'Magazine'</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;verbose_name_plural = u<span style="color: #483d8b;">'Magazines'</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;slug = models.<span style="color: black;">SlugField</span><span style="color: black;">&#40;</span>u<span style="color: #483d8b;">'Slug'</span>, max_length = 100, unique = <span style="color: #008000;">True</span>,<span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;content = models.<span style="color: black;">TextField</span><span style="color: black;">&#40;</span>u<span style="color: #483d8b;">'Content'</span><span style="color: black;">&#41;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2011/08/08/heranca-de-modelos-no-django/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criando variáveis dinâmicas no Django</title>
		<link>http://blog.salsotto.com/2011/08/05/criando-variaveis-dinamicas-no-django/</link>
		<comments>http://blog.salsotto.com/2011/08/05/criando-variaveis-dinamicas-no-django/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 13:45:11 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=748</guid>
		<description><![CDATA[Fazendo um comparativo, esta funcionalidade do Python é similar a funcionalidade do PHP (variáveis variáveis), onde através de um request é possível criar variáveis dinamicamente. Como em muitos outros casos, realizar essa manipulação no Django é absolutamente &#8220;easy&#8221;.
Fica mais essa dica! Abs
#percorre o requestfor key, value in request.POST.iteritems&#40;&#41;:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#cria as variaveis dinamicamente&#160;&#160;&#160;&#160;globals&#40;&#41;&#91;key&#93; = request.POST.get&#40;key, ''&#41;
]]></description>
			<content:encoded><![CDATA[<p>Fazendo um comparativo, esta funcionalidade do Python é similar a funcionalidade do PHP (<a href="http://php.net/manual/pt_BR/language.variables.variable.php" target="_blank">variáveis variáveis</a>), onde através de um request é possível criar variáveis dinamicamente. Como em muitos outros casos, realizar essa manipulação no Django é absolutamente &#8220;easy&#8221;.</p>
<p>Fica mais essa dica! Abs</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Python"><div class="devcodeoverflow"><ol><li><span style="color: #808080; font-style: italic;">#percorre o request</span></li><li><span style="color: #ff7700;font-weight:bold;">for</span> key, value <span style="color: #ff7700;font-weight:bold;">in</span> request.<span style="color: black;">POST</span>.<span style="color: black;">iteritems</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:&nbsp;&nbsp;&nbsp;&nbsp;</li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080; font-style: italic;">#cria as variaveis dinamicamente</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000;">globals</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span>key<span style="color: black;">&#93;</span> = request.<span style="color: black;">POST</span>.<span style="color: black;">get</span><span style="color: black;">&#40;</span>key, <span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2011/08/05/criando-variaveis-dinamicas-no-django/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

