必须先安装了:
python
django
并配置了python path .
首先先创建django 目录:
django-admin.py startproject testpyamf
作者是创建在d:\
在D:\testpyamf 会出现4个.py文件。
在Eclipse 中创建python 工程testpyamf,注意,不是django 目录。
在testpyamf 工程上Import ,注意,不是在src 上导入。
导入D:\testpyamf 就OK 了。会看到工程上多了4个文件。
在src 中新建一个 pydev package 命名 :corleone (笔者E名)
会看到corleone 下多一个空的__init__.py 。大伙都不傻,都知道啥意思的。忽略不讲。
在corleone 中添加 urls.py ,代码如下:
from django.conf.urls.defaults import patterns
urlpatterns = patterns('corleone.view',
(r'^gateway/', 'usersGateway'),
)
再在corleone下新建view.py 代码如下:
# -*- coding:utf-8 -*-
from pyamf.remoting.gateway.django import DjangoGateway
def getAllCompany(request):
return [Company(), Company(3, '323'), Company(23, '32compname')]
def change_name_and_id(request, company):
id = company.id
name = company.name
company.id = name
company.name = id
return company
usersGateway = DjangoGateway({
'mimi.getAllCompany':getAllCompany,
'mimi.change':change_name_and_id,
})
class Company(object):
def __init__(self, id=None, name='2'):
self.id = id
self.name = name
在工程目录下的urls.py代码如下:
from django.conf.urls.defaults import patterns, include, url
urlpatterns = patterns('',
url(r'^corleone/', include('corleone.urls')),
)
服务器端算是OK 了。
接着:启动django . 这里插一句。eclipse 也可以调试django 工程,支持断点。
请看我下一篇博客,嘿嘿……。
假设启动没问题。
且说flex 客户端:
新建flex web 端 工程:testpyamf
笔者是flex 4 的 。
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.controls.dataGridClasses.DataGridColumn;
import mx.rpc.AsyncResponder;
import mx.rpc.AsyncToken;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
[Bindable] private var depAC:Array;
[Bindable] private var jobsAC:Array;
protected function button1_clickHandler(event:MouseEvent):void
{
var token:AsyncToken=djangoService.getAllCompany();
token.addResponder(new AsyncResponder(AfterGetDeps,falutHandler));
}
private function AfterGetDeps(result:Object, token:Object=null):void{
var evt:ResultEvent=result as ResultEvent;
depAC=evt.result as Array;
var dp:ArrayCollection = new ArrayCollection(depAC);
dg_company.dataProvider = dp;
var dgc_id:DataGridColumn = new DataGridColumn();
dgc_id.dataField = "id";
var dgc_name:DataGridColumn = new DataGridColumn();
dgc_name.dataField = "name";
dg_company.addDataEffectItem(dgc_name);
dg_company.addDataEffectItem(dgc_id);
}
private function falutHandler(error:Object, token:Object=null):void{
var evt:FaultEvent=error as FaultEvent;
Alert.show(evt.message.toString());
}
private function succeed(result:Object, token:Object=null):void{
var evt:ResultEvent=result as ResultEvent;
var o:Object =evt.result as Object;
Alert.show("name:" + o.name + "---id:" + o.id)
}
private function error(error:Object, token:Object=null):void{
var evt:FaultEvent=error as FaultEvent;
Alert.show(evt.message.toString());
}
protected function button2_clickHandler(event:MouseEvent):void
{
var token:AsyncToken=djangoService.change(dg_company.selectedItem);
token.addResponder(new AsyncResponder(succeed,error));
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
<mx:RemoteObject id="djangoService" destination="mimi" showBusyCursor="true"/>
</fx:Declarations>
<s:HGroup width="40%" height="50%" id="top" horizontalAlign="center">
<mx:DataGrid id="dg_company" allowMultipleSelection="true" />
<s:Button label="get all company " click="button1_clickHandler(event)" />
<s:Button label="change company id and name " click="button2_clickHandler(event)" />
</s:HGroup>
</s:Application>
然后在flex 的 src 中 新添 文件:services-config.xml
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<service id="ananasService" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage">
<destination id="mimi">
<channels>
<channel ref="ananasChannel"/>
</channels>
<properties>
<source>*</source>
</properties>
</destination>
</service>
</services>
<channels>
<channel-definition id="ananasChannel" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://localhost:8080/corleone/gateway/" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
</channels>
</services-config>
最后,在flex 工程中右击,选属性,选flex 编译器, 附加编译器参数:
-locale zh_CN -services "services-config.xml"
然后就OK 了。
需要注意的是,前后台的mimi 都要一致。
试着跑跑吧。
分享到:
相关推荐
在本示例中,Django作为后端服务器,处理HTTP请求,使用PyAMF与Flex进行通信,并管理与MySQL数据库的连接。Django的ORM(对象关系映射)层使我们能够方便地操作数据库,无需编写低级SQL语句。 Python是这个项目的...
接着,PyAMF作为中间件,允许Django与Flex通信。它实现了AMF协议,使得后端数据能以高效的方式传输到Flex客户端,反之亦然。在实际操作中,这可能涉及到设置AMF通道,定义序列化和反序列化的规则,以及在Django视图...
Flex应用可以与后台Python服务(如通过PyAMF)通信,接收和发送数据,实现动态内容的实时更新。 5. Apache服务器: Apache是世界上最流行的Web服务器软件,以其稳定性和可扩展性著称。在Python Web开发中,Apache常...
在这个场景中,我们将探讨如何在Windows环境下,通过C#桌面程序(WinForm)与Django Web框架进行通信,实现前后端分离。 首先,C# WinForm作为前端应用,可以使用HttpClient类来发起HTTP请求,与Django服务器进行...
《Django入门与实践》这份资源是一份针对初学者的Python Web开发教程,重点介绍了Django框架的基础知识和实际应用技巧。Django是Python编程语言中最受欢迎的Web框架之一,以其“快速、可扩展且优雅”的特性深受...
【Django入门与实践教程1】是一份针对初学者的详尽教程,旨在引导读者从零开始构建一个实际的Django项目。教程涵盖了从环境搭建到项目部署的全过程,涉及了Django框架的核心概念和技术。 首先,【环境搭建】章节会...
内容概要:本文详细介绍了如何在Django框架中使用WebSocket和Django Channels实现高效的实时通信功能。主要内容包括:WebSocket的基本原理及其在现代Web应用中的重要性;Django Channels的架构和使用方法;具体实例...
django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django...
Django拥有丰富的第三方库,如Django REST framework用于构建RESTful API,Django Channels支持WebSocket通信,以及用于权限管理的Django Guardian等。 以上只是Django框架的基本介绍,实际上,Django的功能远不止...
4. **集成其他Python框架**:PyAMF能够与多种Python Web框架集成,如Django、Flask、Pylons等,方便地实现与Flash客户端的交互。 5. **Flex和 BlazeDS集成**:如果你的项目使用了Adobe Flex或BlazeDS,PyAMF可以...
Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django...
Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统...
用Python与Django开发的在线教育平台网站源码 用Python与Django开发的在线教育平台网站源码 用Python与Django开发的在线教育平台网站源码 用Python与Django开发的在线教育平台网站源码 ...
例如,Flash应用可以通过XMLSocket或XMLHttpRequest与Django后端进行实时通信,获取或发送数据。在Django端,可以创建API接口,接收并处理Flash发送的数据请求。 #### 3. 安全性考虑 由于Flash的内容可以直接访问...
将Django与Scrapy结合,可以利用Django的Web功能来启动、监控和控制Scrapy爬虫,实现一个用户友好的爬虫管理系统。以下是实现这种结合的关键步骤: 1. **创建Django项目和应用**:首先,我们需要创建一个新的Django...
基于Django的个人网盘源码 基于Django的个人网盘源码 基于Django的个人网盘源码 基于Django的个人网盘源码 基于Django的个人网盘源码 基于Django的个人网盘源码 基于Django的个人网盘源码 基于Django...
Django框架简介与环境搭建 Django项目和应用创建 Django模型设计与数据库操作 Django视图函数与URL配置 Django模板系统与HTML渲染 ...Django高级特性:WebSocket与实时通信 Django实战项目:在线商城系统开发
- RESTful API:如果项目需要前后端分离,可以利用Django的REST framework构建API接口,与前端进行通信。 7. 学习资源: - Django官方文档:了解Django框架的基础知识和最佳实践。 - Layui官方文档:学习Layui的...
Django:Django高级特性:WebSocket与实时通信.docx