Django 开发随笔(二)

本文介绍了如何通过PyAMF实现在Django后端与Flex前端之间的交互。具体步骤包括安装PyAMF、配置Django服务端及Flex客户端,并提供了一个简单的测试案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django 与 Flex.

想要开发一个漂亮的网站,总要一些flash效果滴。这就涉及到django如何与flex打交道。基本的原理是利用pyamf这个中间件,把django里的request和flex里的actionscript 互相转化。

1. 安装pyamf. 我使用的是0.6.1. 没说的,老方法,python manage.py install就安装好了。

2. django端(服务器端)创建方法:

  a. 创建amfgateway.py在你的工程根目录下

  b. 添加如下内容:

from pyamf.remoting.gateway.django import DjangoGateway

def say_hello(request, name):
return "hello : %s" % name

usersGateway
= DjangoGateway({
'my.sayHello':say_hello,
})

 注意里面的"my", 这会在后面的flex端使用。

  c. 修改你的urls.py,添加 (r'^my/gateway/', 'my.amfgateway.usersGateway'),

3. Flex端:

首先创建services-config.xml,添加如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<service id="activeService" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage">
<destination id="my">
<channels>
<channel ref="myChannel"/>
</channels>
<properties>
<source>*</source>
</properties>
</destination>
</service>
</services>
<channels>
<channel-definition id="myChannel" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://127.0.0.1:8000/my/gateway/" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
</channels>
</services-config>

注意destination 的 id属性必须与第二步的my相同。

3. Flex端写一个简单的测试:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout
="absolute" initialize="init();" xmlns:s="library://ns.adobe.com/flex/spark">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.AsyncResponder;
import mx.rpc.AsyncToken;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;

private function sayHello():void{
var token:AsyncToken = djangoService.sayHello('Joe');
token.addResponder(new AsyncResponder(afterSayHello, falutHandler));
}
private function falutHandler(error:Object, token:Object=null):void{
var evt:FaultEvent=error as FaultEvent;
Alert.show(evt.message.toString());
}
private function afterSayHello(result:Object, token:Object=null):void{
var evt:ResultEvent=result as ResultEvent;
Alert.show(evt.result as String);
}

protected function button1_clickHandler(event:MouseEvent):void
{
sayHello();
}

]]>
</mx:Script>

<mx:RemoteObject id="djangoService" destination="my"/>

<s:Button click="button1_clickHandler(event)" content="Click Me">
</s:Button>

</mx:Application>

试着运行一下:

2011040816204618.png

下一篇会写如何将写好的swf文件插入到html里。

转载于:https://www.cnblogs.com/joezhang/archive/2011/04/08/2009577.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值