<?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>lucmult &#187; django</title>
	<atom:link href="http://blog.lucmult.com.br/topics/django/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lucmult.com.br</link>
	<description>Python, Django and Plone</description>
	<lastBuildDate>Thu, 12 Nov 2009 01:30:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Django + AMF + Flex</title>
		<link>http://blog.lucmult.com.br/2009/08/django-amf-flex/</link>
		<comments>http://blog.lucmult.com.br/2009/08/django-amf-flex/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 18:40:29 +0000</pubDate>
		<dc:creator>lucmult</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.lucmult.com.br/?p=100</guid>
		<description><![CDATA[
Hoje fui almoçar na casa da mamãe e levei o note &#8211; o macluck. Meu pai estava lá estudando o C# com o Flex, que eles estão começando a utlizar na  Mult . 

O assunto foi o que utilizar entre o .Net e o Flex? Web Service (xml), JSON ou qualquer outra coisa.
Com isso [...]]]></description>
			<content:encoded><![CDATA[<p>
Hoje fui almoçar na casa da mamãe e levei o note &#8211; o macluck. Meu pai estava lá estudando o C# com o Flex, que eles estão começando a utlizar na <a href="http://multprocessing.com.br"> Mult </a>. </p>
<p>
O assunto foi o que utilizar entre o .Net e o Flex? Web Service (xml), JSON ou qualquer outra coisa.</p>
<p>Com isso fiquei pensando nas alternativas em Python e pesquisando o pessoal recomenda utilizar o formato AMF para serializar e transmitir objetos do servidor para o cliente Flex.</p>
<p>Logo pensei em tentar fazer algo em Django + AMF.</p>
<p>E é isso que vamos ver, faremos um Hello World. <img src='http://blog.lucmult.com.br/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><h2> O que precisamos ? </h2>
<p>Django, SQLite e DjangoAMF no servidor para conseguirmos enviar objetos para o cliente Flex.</p>
<p>Flex SDK para compilarmos os fontes Flex e gerarmos o .swf que irá rodar no browser.</p>
<p>O Flex roda no Flash Player, portante você precisará dele também, mas hoje em dia todo mundo tem, afinal precisamos assistir ao YouTube. <img src='http://blog.lucmult.com.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h2> Instanlando o Flex SDK </h2>
<p>Faça o download do <a href="http://download.macromedia.com/pub/flex/sdk/flex_sdk_3.zip"> Flex SDK </a>, esse é um arquivão gigante com o Flex SDK compilado para as 3 plataformas (Linux, Mac e Win), ou seja basta descompactar em uma pasta que está pronto.</p>
<p>Mas crie uma pasta só para esse arquivo .zip, pois ele irá criar tudo na pasta em que ele está.</p>
<p>Então façamos isso:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw2">mkdir</span> -p ~<span class="sy0">/</span>bin<span class="sy0">/</span>flex-sdk &nbsp; <span class="co0"># vou colocar no diretório bin na home do meu usuário</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw3">cd</span> ~<span class="sy0">/</span>bin<span class="sy0">/</span>flex-sdk</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw2">wget</span> http:<span class="sy0">//</span>download.macromedia.com<span class="sy0">/</span>pub<span class="sy0">/</span><span class="kw2">flex</span><span class="sy0">/</span>sdk<span class="sy0">/</span>flex_sdk_3.<span class="kw2">zip</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw2">unzip</span> flex_sdk_3.<span class="kw2">zip</span></div>
</li>
</ol>
</div>
<p>Vamos testar compilando um exemplo:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw3">cd</span> ~<span class="sy0">/</span>bin<span class="sy0">/</span>flex-sdk<span class="sy0">/</span>samples<span class="sy0">/</span>explorer</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ .<span class="sy0">/</span>build.<span class="kw2">sh</span> <span class="co0"># ou &#39;sh build.sh&#39; ou no windows &#39;build.bat&#39;</span></div>
</li>
</ol>
</div>
<p>Agora verifque se funcionou abrindo o arquivo ~/bin/flex-sdk/samples/explorer/explorer.html </p>
<p>Você verá algo como: </p>
<p><img class="alignnone size-full wp-image-103" title="flex_explorer" src="http://blog.lucmult.com.br/blog/wp-content/uploads/2009/08/flex_explorer.png" alt="Flex Explorer" width="640" height="289" /></p>
<h2> Vamos para o Django </h2>
<p>Eu utilizo o virtualenv, mas você pode fazer sem ele se você preferir.</p>
<p>Criando o virtualenv, o importante é utilizar pelo menos o Python 2.5, pois o DjangoAMF requer.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw3">cd</span> ~<span class="sy0">/</span>src_rm <span class="co0"># diretório onde deixo os fontes que desenvolvo</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ virtualenv django_flex</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw3">cd</span> django_flex </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw3">source</span> bin<span class="sy0">/</span>activate</div>
</li>
</ol>
</div>
<p>Instalar o Django 1.1 e o DjangoAMF:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ easy_install django </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw2">mkdir</span> src &nbsp; <span class="co0"># ~/src_rm/django_flex/src</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw3">cd</span> src</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw2">wget</span> http:<span class="sy0">//</span>globalbase.dl.sourceforge.jp<span class="sy0">/</span>djangoamf<span class="sy0">/</span><span class="nu0">36602</span><span class="sy0">/</span>djangoamf<span class="nu0">-0.8</span>.<span class="kw2">zip</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw2">unzip</span> djangoamf<span class="nu0">-0.8</span>.<span class="kw2">zip</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw3">cd</span> djangoamf<span class="nu0">-0.8</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ python setup.py <span class="kw2">install</span></div>
</li>
</ol>
</div>
<h2> Criando uma aplicação django </h2>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw3">cd</span> ~<span class="sy0">/</span>src_rm<span class="sy0">/</span>django_flex</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ django-admin.py startproject mysite</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw3">cd</span> mysite</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ python manage.py startapp teste</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ vi settings.py</div>
</li>
</ol>
</div>
<p>Configure no settings.py, o banco de dados e adicione o Middleware do DjangoAMF que permitirá enviar os objetos pelo protocolo AMF.</p>
<div class="geshi no python">
<div class="head">Arquivo: mysite/settings.py</div>
<ol>
<li class="li1">
<div class="de1">DATABASE_ENGINE = <span class="st0">&#39;sqlite3&#39;</span></div>
</li>
<li class="li1">
<div class="de1">DATABASE_NAME = <span class="st0">&#39;mydb.db&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&#8230;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="me1">MIDDLEWARE_CLASSES</span> = <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&#8230;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#39;amf.django.middleware.AMFMiddleware&#39;</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Agora vamos fazer um método que será chamado pelo Flex:</p>
<div class="geshi no python">
<div class="head">Arquivo: mysite/teste/views.py</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">datetime</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">def</span> horaAgora<span class="br0">&#40;</span>request<span class="br0">&#41;</span>: &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="kw3">datetime</span>.<span class="kw3">datetime</span>.<span class="me1">now</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Vamos configurar para essse método utilizar o AMF:</p>
<div class="geshi no python">
<div class="head">Arquivo: mysite/urls.py</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">urlpatterns = patterns<span class="br0">&#40;</span><span class="st0">&#39;&#39;</span>,</div>
</li>
<li class="li1">
<div class="de1">&#8230;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="me1"><span class="br0">&#40;</span>r</span><span class="st0">&#39;^gateway/teste/(.*)&#39;</span>, <span class="st0">&#39;amf.django.views&#39;</span>, <span class="br0">&#123;</span><span class="st0">&#39;views&#39;</span>: <span class="st0">&#39;mysite.teste.views&#39;</span><span class="br0">&#125;</span><span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Isso é o básico para você conseguir fazer a chamada no Flex.</p>
<h2> Fazendo o nosso cliente Flex </h2>
<p>Eu vou utilizar o Flex sem o Flex Builder que é pago, você pode fazer com Flex Builder, ou se você tiver no Windows com o FlashDevelop, que dá para trabalhar muito bem com o Flex.</p>
<p>Eu fiz o cliente Flex em outra pasta fora do Django e do virtualenv, para dar a idéia de ser totalmente separado, só fazendo a chamada via HTTP (e AMF).</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp;$ <span class="kw3">cd</span> src_rm</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;$ <span class="kw2">mkdir</span> flex_cliente</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;$ <span class="kw3">cd</span> flex_cliente</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;$ vi hora_servidor.mxml</div>
</li>
</ol>
</div>
<p>Agora vem a parte que eu não conheço muito e praticamente só copiei <a href="http://chevitarese.wordpress.com/2009/07/24/django-django-e-flex-1%C2%B0-exemplo"> daqui </a>.</p>
<p>Muito embora, eu também não domino o Django eu comecei a estudar ele a pouco tempo e não sei muito não. :-/</p>
<div class="geshi no actionscript">
<div class="head">Arquivo: hora_servidor.mxml</div>
<ol>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>?<span class="kw3">xml</span> <span class="kw3">version</span>=<span class="st0">&quot;1.0&quot;</span> encoding=<span class="st0">&quot;utf-8&quot;</span> ?<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>mx:Application xmlns:mx=<span class="st0">&quot;http://www.adobe.com/2006/mxml&quot;</span> layout=<span class="st0">&quot;absolute&quot;</span> creationComplete=<span class="st0">&quot;getTime()&quot;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>mx:Script<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sy0">&lt;!</span><span class="br0">&#91;</span>CDATA<span class="br0">&#91;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">import</span> mx.<span class="me1">controls</span>.<span class="me1">Alert</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">import</span> mx.<span class="me1">rpc</span>.<span class="me1">events</span>.<span class="me1">ResultEvent</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">import</span> mx.<span class="me1">rpc</span>.<span class="me1">events</span>.<span class="me1">FaultEvent</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">import</span> mx.<span class="me1">rpc</span>.<span class="me1">remoting</span>.<span class="me1">mxml</span>.<span class="me1">RemoteObject</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">private</span> <span class="kw2">function</span> <span class="kw3">getTime</span><span class="br0">&#40;</span><span class="br0">&#41;</span>: <span class="kw3">void</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">var</span> ro: RemoteObject;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;ro = <span class="kw2">new</span> RemoteObject<span class="br0">&#40;</span><span class="st0">&quot;teste&quot;</span><span class="br0">&#41;</span>; <span class="co1">// Aqui é o nome do objeto remoto, no nosso caso temos apenas uma função, mas o que está após o /gateway/ no urls.py, será considerado o objeto remote</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;ro.<span class="me1">endpoint</span> = <span class="st0">&#39;http://127.0.0.1:8000/gateway/&#39;</span> &nbsp;<span class="co1">// URL do que chama-se de gateway</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;ro.<span class="me1">addEventListener</span><span class="br0">&#40;</span>FaultEvent.<span class="me1">FAULT</span>, getErro<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;ro.<span class="me1">addEventListener</span><span class="br0">&#40;</span>ResultEvent.<span class="me1">RESULT</span>, showResult<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;ro.<span class="me1">getOperation</span><span class="br0">&#40;</span><span class="st0">&#39;horaAgora&#39;</span><span class="br0">&#41;</span>.<span class="kw3">send</span><span class="br0">&#40;</span><span class="br0">&#41;</span>; &nbsp; <span class="co1">// nome do método do objeto remoto</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">public</span> <span class="kw2">function</span> getErro<span class="br0">&#40;</span>ro:FaultEvent<span class="br0">&#41;</span>: <span class="kw3">void</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;Alert.<span class="kw3">show</span><span class="br0">&#40;</span>ro.<span class="me1">fault</span>.<span class="me1">faultDetail</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">public</span> <span class="kw2">function</span> showResult <span class="br0">&#40;</span>ro: ResultEvent<span class="br0">&#41;</span> :<span class="kw3">void</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;Alert.<span class="kw3">show</span><span class="br0">&#40;</span><span class="st0">&quot;A hora é &quot;</span> + ro.<span class="me1">result</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>mx:Script<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>mx:Application<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
<p>Agora temos que compilar o danado.</p>
<p>Eu não coloquei o diretório <strong> bin </strong> do Flex SDK no PATH, pois eu não uso o Flex no dia-a-dia, portanto terei que utilizar o caminho para o compilador, mas se você for utilizar isso no dia-a-dia, recomendo colocar no PATH.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;$ <span class="kw3">cd</span> ~<span class="sy0">/</span>src_rm<span class="sy0">/</span>flex_cliente</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;$ &nbsp;~<span class="sy0">/</span>bin<span class="sy0">/</span>flex-sdk<span class="sy0">/</span>bin<span class="sy0">/</span>mxmlc hora_servidor.mxml</div>
</li>
</ol>
</div>
<p>Pronto você já tem um cliente Flex, pode abrí-lo no Firefox, no Safari eu não consegui abrir o .swf, tive que fazer um HTML que chama o .swf. :-/</p>
<p>Se você tiver sorte já irá funcionar <img src='http://blog.lucmult.com.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  E você verá algo como:</p>
<p><img class="alignnone size-full wp-image-102" title="flex_cliente_ok" src="http://blog.lucmult.com.br/blog/wp-content/uploads/2009/08/flex_cliente_ok.png" alt="Flex Cliente OK" width="622" height="284" /></p>
<p>Ou você não teve sorte e apareceu algo como:</p>
<p><img class="alignnone size-full wp-image-101" title="flex_cliente_erro" src="http://blog.lucmult.com.br/blog/wp-content/uploads/2009/08/flex_cliente_erro.png" alt="Flex Cliente Erro" width="640" height="289" /></p>
<p>Mas você não deve ter sorte, e teremos que adicionar um novo arquivo no &#8220;servidor&#8221;, lá no Django, para o Flex funcionar, eu não entendi direito o que é isso e porque as vezes funciona sem esse arquivo.</p>
<p>Eu estava estudando isso por puro prazer, então não fui muito a fundo nos questões referentes ao flex, porém isso é algo importante para se saber ao usar em um ambiente de produção.</p>
<p>Vamos vamos resolver:</p>
<p>Lá no Django vamos criar um novo arquivo e disponibilizá-lo na raiz do site.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ <span class="kw3">cd</span> ~<span class="sy0">/</span>src_rm<span class="sy0">/</span>django_flex<span class="sy0">/</span>mysite</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $ vi crossdomain.xml</div>
</li>
</ol>
</div>
<p>O arquivo deve conter esse conteúdo:</p>
<div class="geshi no xml">
<div class="head">Arquivo: mysite/crossdomain.xml</div>
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span><span class="re2">?&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;cross-domain-policy<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sc3"><span class="re1">&lt;allow-http-request-headers-from</span> <span class="re0">domain</span>=<span class="st0">&quot;*&quot;</span> <span class="re0">headers</span>=<span class="st0">&quot;*&quot;</span> <span class="re0">secure</span>=<span class="st0">&quot;false&quot;</span> <span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sc3"><span class="re1">&lt;allow-access-from</span> <span class="re0">domain</span>=<span class="st0">&quot;*&quot;</span> <span class="re0">secure</span>=<span class="st0">&quot;false&quot;</span> <span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/cross-domain-policy<span class="re2">&gt;</span></span></span></div>
</li>
</ol>
</div>
<p>Ainda falta ensinar o Django a disponibilizar esse arquivo como se estivesse na raiz.</p>
<div class="geshi no python">
<div class="head">Arquivo: mysite/urls.py</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">from</span> django.<span class="me1">conf</span> <span class="kw1">import</span> settings</div>
</li>
<li class="li1">
<div class="de1">&#8230;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> settings.<span class="me1">DEBUG</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; urlpatterns += patterns<span class="br0">&#40;</span><span class="st0">&#39;&#39;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>r<span class="st0">&#39;^(crossdomain.xml)$&#39;</span>, <span class="st0">&#39;django.views.static.serve&#39;</span>, <span class="br0">&#123;</span><span class="st0">&#39;document_root&#39;</span>: <span class="st0">&#39;./&#39;</span><span class="br0">&#125;</span><span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Provavelmente tem outras formas mais intenligentes de disponibilizar isso no raiz do Django, mas como eu sou iniciante ainda, fiz desse jeito mesmo que é simples o suficiente para resolver o problema. <img src='http://blog.lucmult.com.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>E agora está pronto nosso Hello World, ou melhor, nosso What time is it ? </p>
<p>Eu achei legal e simples a forma de utilizar o AMF no Django, permitindo interagir com clientes Flex.</p>
<p>E vocês, o que acharam ?</p>
<h2> Fontes:</h2>
<p>Django AMF: <a href"http://djangoamf.sourceforge.jp/"> http://djangoamf.sourceforge.jp/ </a><br />
Django + Flex: <a href="http://chevitarese.wordpress.com/2009/07/24/django-django-e-flex-1%C2%B0-exemplo/">http://chevitarese.wordpress.com/2009/07/24/django-django-e-flex-1%C2%B0-exemplo/</a><br />
Django + Flex: <a href="http://chevitarese.files.wordpress.com/2009/07/djangoflex.pdf">http://chevitarese.files.wordpress.com/2009/07/djangoflex.pdf </a><br />
VIM + Flex: <a href="http://ubuntuforums.org/showthread.php?t=742981">http://ubuntuforums.org/showthread.php?t=742981</a><br />
Meu VIM, agora com flex: <a href="http://hg.lucmult.com.br/vim/rev/32e24bf7768a" > http://hg.lucmult.com.br/vim/rev/32e24bf7768a </a><br />
Flex SDK: <a href="http://download.macromedia.com/pub/flex/sdk/flex_sdk_3.zip"> http://download.macromedia.com/pub/flex/sdk/flex_sdk_3.zip </a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucmult.com.br/2009/08/django-amf-flex/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
