使用Flex4DjangoPython和PyAMF进行开发Word文档格式.docx
- 文档编号:21527145
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:13
- 大小:23.15KB
使用Flex4DjangoPython和PyAMF进行开发Word文档格式.docx
《使用Flex4DjangoPython和PyAMF进行开发Word文档格式.docx》由会员分享,可在线阅读,更多相关《使用Flex4DjangoPython和PyAMF进行开发Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
它的代码既条理清晰又恰到好处。
检查Python
要安装Django,您必须拥有Python2.5或更高版本。
尽管Django能很好地兼容Python2.4,但您需要使用Python2.5,因为它包含轻量数据库SQLite3的一个接口,本教程中将使用该接口。
SQLite3已与Python2.5绑定。
要确认您的Python版本:
1.打开一个终端。
2.键入python。
(在命令行,输入每个命令后按回车键执行它。
)
如果已安装Python,您将看到一条短消息显示它的版本号(参见图1)。
3.按Ctrl+D退出Python。
也可以键入python–version,这将显示版本并返回到命令提示符。
图1.Python在启动时显示它的版本
如果还未安装Python,访问Python官方网站,下载并安装最新版本。
下载和安装Django
按照以下步骤下载并安装Django:
1.访问Django下载页面并下载最新的官方版本。
2.在终端中,更改到将Django-1.2.1.tar.gz文件下载到的目录,例如,如果您将文件下载到/downloads,则键入cd/downloads。
备注:
Django-1.2.1是编写本文时最高的官方版本。
如果存在更新的版本,您可以使用它,只需在下面的步骤中将1.2.1替换为最新版本即可。
3.键入tarxzvfDjango-1.2.1.tar.gz解压压缩的存档文件。
4.键入cdDjango-1.2.1。
5.键入sudopythonsetup.pyinstall
在一些系统上,可能需要在python命令之前键入sudo。
sudo命令以系统的超级用户或管理员身份执行命令,依据您的权限,这可能没有必要。
在MacOSX上,此能力内置于您的主要帐户中。
如果使用Windows,将需要以管理员特权启动一个命令shell,然后运行setup.pyinstall。
接下来,确认您已成功安装Django。
6.键入python。
7.在python提示符下(>
>
),键入importdjango。
8.键入django.get_version()。
应该看到您的Django安装的版本号。
安装PyAMF
PyAMF是一个用于从服务器向客户端发送二进制对象的不错框架。
PyAMF使用AdobeActionMessageFormat(AMF)规范序列化服务器端对象。
使用AMF的一个优势表现在性能上。
AMF用于将远程过程编码为紧凑的二进制表示,然后可以通过HTTP/HTTPS或RTMP/RTMPS协议高效地传输。
使用PyAMF的另一个优势在于,可以保持对象的数据类型。
所以,举例而言,如果服务器以ArrayCollection形式向客户端发送一个对象,客户端将以ArrayCollection形式收到该对象。
安装PyAMF的最简单方式是运行Python的EasyInstall包管理器。
如果已在系统上安装了EasyInstall,则只需运行以下命令:
easy_installpyamf如果没有EasyInstall或者在安装过程中遇到了问题,请访问PyAMF网站获取手动安装说明。
创建Django项目
安装Python、Django和PyAMF以后,就可以创建您的第一个Django项目了。
如果这是首次使用Django,则必须进行一些初始设置。
您将必须在将用于存储所有Django代码的目录中创建一个Django项目。
Django项目是一个代码目录,包含所有设置,比如数据库配置、Django特定的选项和应用程序特定的选项。
创建项目
按照以下步骤启动Django项目:
1.更改到将包含所有Django代码的目录。
例如,创建一个名为/Django的文件夹,然后键入cd/Django。
2.键入django-admin.pystartprojectmyapp。
3.键入cdmyapp更改到新创建的myapp目录。
4.键入ls查看自动生成的文件(参见图2)。
图2.新创建的Django项目目录包含一些文件
settings.py文件用于设置您的Django特定配置。
urls.py文件类似于MVC范式中的控制器,它在从浏览器收到URL时加载合适的视图(HTML页面)。
当它找到与HTTP请求匹配的内容时,就调用正确视图的函数来加载该视图。
稍后在涉及到PyAMF网关时将深入分析此文件。
5.编辑settings.py文件并将数据库引擎和名称设置如下。
(将数据库的路径更改为新创建的myapp目录中的一个文件。
DATABASE_ENGINE='
sqlite3'
DATABASE_NAME='
/Users/anthonycintron/Sites/myapp/mydb'
DATABASES={
'
default'
:
{
ENGINE'
django.db.backends.sqlite3'
#Add'
postgresql_psycopg2'
'
postgresql'
mysql'
or'
oracle'
.
NAME'
#Orpathtodatabasefileifusingsqlite3.
USER'
'
#Notusedwithsqlite3.
PASSWORD'
HOST'
#Settoemptystringforlocalhost.Notusedwithsqlite3.
PORT'
#Settoemptystringfordefault.Notusedwithsqlite3.
}
}
6.保存您对settings.py的更改并返回到命令行。
7.在命令行上,键入pythonmanage.pysyncdb。
8.系统将要求您定义一个超级用户,按照说明进行定义(参见图3)。
图3.运行pythonmanage.pysyncdb创建数据库
创建数据模型
下一步是创建订阅应用程序的数据模型。
因为这是一个小项目,所以仅需要创建一个包含少量数据库字段的模型。
在创建模型之前,首先必须创建一个项目应用程序。
在Flex,应用程序包括模块或组件等。
应该尝试确保创建的应用程序容易适合未来的项目,因为使用Django的一个目标就是创建可重用的代码。
按照以下步骤创建应用程序和数据模型:
1.在myapp目录中键入pythonmanage.pystartappsubscription,创建一个名为subscription的新应用程序。
2.键入cdsubscription更改到新的subscription目录。
3.编辑models.py文件,添加以下行:
fromdjango.dbimportmodels
#Createyourmodelshere.
classSubscribe(models.Model):
email=models.EmailField()
receive_communication=models.NullBooleanField(null=True)
def__unicode__(self):
returnself.email
4.保存更改。
5.键入cd..更改回myapp目录。
6.键入pythonmanage.pysyncdb。
这个Subscribe类扩展Django的Model类。
当运行syncdb时,将创建Subscribe模型并添加两列:
email和receive_communication。
该类中的函数定义将该条目设置为人类可读的标签。
7.编辑urls.py,删除前导的#以取消注释以下行:
fromdjango.contribimportadminadmin.autodiscover()这使控制器可以找到admin查询。
对应用程序的任何请求都会调用控制器。
它使用URL确定向用户显示哪个视图。
例如,如果管理员访问
8.在编辑urls.py时,取消注释以下行以启用DjangoAdmin应用程序:
(r'
^admin/'
include(admin.site.urls)),
9.保存更改。
现在需要安装您的Admin和Subscription应用程序。
10.再次编辑settings.py。
11.在文件末尾取消注释'
django.contrib.admin'
并将'
myapp.subscription'
添加到INSTALLED_APPS设置中:
INSTALLED_APPS=(
django.contrib.auth'
django.contrib.contenttypes'
django.contrib.sessions'
django.contrib.sites'
)12.保存更改。
13.返回到命令行,键入pythonmanage.pysyncdb将这两个应用程序添加到数据库。
14.最后,键入pythonmanage.pyrunserver启动服务器。
15.在您浏览器中,转到http:
//127.0.0.1:
8000/admin/并登录到您的Django管理控制台。
在Django管理控制台内查看Subscription
当登录到您的Django管理控制台时,您将注意到Django应用程序未显示。
这是因为您需要Django项目能感知Subscription模型,以便它可以使用该模型显示数据库数据。
要向Django注册Subscription模型,执行以下步骤:
1.更改到您的myapp/subscription目录。
2.在该目录中,创建一个名为admin.py的文件,其中包含以下内容:
frommyapp.subscription.modelsimportSubscribe
fromdjango.contribimportadmin
admin.site.register(Subscribe)
现在您已经注册了Subscribe,Django将在管理控制台中识别出Subscribe(参见图4)。
图4.注册Subscription之后,它将在Django管理控制台中显示
开发Flex4应用程序
您现在已准备好在FlashBuilder4中开发Flex4接口了。
您可以执行本节中的步骤自行开发Flex应用程序,或者如果您愿意,可以执行以下步骤导入示例项目:
1.下载并提取本教程的示例文件。
2.启动FlashBuilder。
3.选择File>
ImportFlexProject(FXP)。
4.找到并选择Subscription.fxp。
设置用户界面
要启动您自己的Flex应用程序,执行以下步骤:
1.启动FlashBuilder。
2.选择File>
New>
FlexProject
3.为项目输入名称,选择Flex4SDK,然后将ApplicationServerType设置为None/Other。
4.单击Finish。
5.在Design视图中,添加一个TextInput、一个SubmitButton、一个List和一个包含标签的Checkbox(参见图5)。
图5.布局包含一个TextInput、Button、Checkbox和List
您可以按照您喜欢的方式布局元素,但需要设置一些组件属性来将它们连接起来。
6.切换回Source视图。
7.设置元素的id属性、按钮的click属性,以及列表的dataprovider属性,如下面的MXML所示:
<
s:
layout>
<
VerticalLayouthorizontalAlign="
center"
verticalAlign="
middle"
/>
/s:
HGroup>
TextInputid="
inputField"
width="
150"
/>
Buttonclick="
onSend(event)"
label="
Send"
CheckBoxlabel="
Emailmesiteupdates"
selected="
true"
id="
receiveUpdates"
Listid="
subscriptionList"
dataProvider="
{_list}"
labelField="
email"
225"
height="
100"
VerticalLayout/>
List>
添加RemoteObject
要发送和接收ActionScript数据,需要在<
fx:
Declarations>
标记中创建一个RemoteObject对象。
RemoteObject类使您能够访问远程服务器上的类。
您必须包含一些属性,远程对象才能工作。
channelSet是一个Channels数组,用于向目标位置发送消息。
(这是在紧挨着RemoteObject上方的ChannelSet标记中定义的。
)destination属性是您的网关服务的名称。
最后,需要添加服务器端方法的名称。
查看以下示例代码:
!
--connectiontogateway-->
ChannelSetid="
channels"
AMFChannelid="
pyamf"
uri="
http:
8000/gateway/"
ChannelSet>
RemoteObjectid="
getSubscriptionService"
channelSet="
{channels}"
destination="
myservice"
showBusyCursor="
>
methodname="
saveEmail"
result="
onSaveEmailSuccess(event)"
fault="
onFault(event)"
getEmailList"
onEmailListSuccess(event)"
RemoteObject>
/fx:
创建Subscriber值对象
使用PyAMF的一个重要优势是,能够在服务器端注册您的ActionScript类。
可以设置远程对象的数据类型,以便当通过AMF发送它们时,ActionScript已准备好接收强类型数据。
这非常适用于使用值对象。
1.在FlashBuilder中,右键单击src文件夹并选择New>
Package。
2.将包命名为com.subscription.vos。
3.右键单击新包并选择New>
ActionScriptClass。
4.将该类命名为SubscriberVO。
5.使SubscriberVO属性匹配服务器上的数据模型,例如:
packagecom.subscription.vos
{
[RemoteClass(alias="
com.subscription.vos.SubscriberVO"
)]
[Bindable]
publicclassSubscriberVOextendsObject
publicvarid:
int;
publicvaremail:
String;
publicvarreceive_communication:
Boolean;
publicfunctionSubscriberVO(email:
String,receive:
Boolean)
this.email=email;
this.receive_communication=receive;
要注册您的类供远程使用,必须添加RemoteClass元数据标记。
这使该类可在运行时访问。
类属性必须与服务器对象匹配。
处理事件
最后您将需要添加一些ActionScript代码来处理事件。
回到项目的主MXML文件中,在<
后添加以下<
Script>
块:
[CDATA[
importmx.events.FlexEvent;
importmx.collections.ArrayCollection;
importmx.rpc.events.FaultEvent;
importmx.rpc.events.ResultEvent;
[ArrayElementType("
SubscriberVO"
)]
privatevar_list:
ArrayCollection;
privatefunctiononSaveEmailSuccess(event:
ResultEvent):
void
getSubscriptionService.getEmailList();
privatefunctiononFault(event:
FaultEvent):
trace(event.fault);
privatefunctiononEmailListSuccess(event:
_list=newArrayCollection(event.resultasArray);
privatefunctiononSend(e:
MouseEvent):
getSubscriptionService.saveEmail(inputField.text,receiveUpdates.selected);
protectedfunctioninit(event:
FlexEvent):
]]>
请注意privateproperty_list:
ArrayCollection上方的元数据标记ArrayElementType。
这可以确保_listArrayCollection中的每个对象都具有严格的SubscriberVO类型。
作为最后一步,将creationComplete="
init(event)"
添加到主Application标记中。
在应用程序启动时,init()方法使用电子邮件地址填充该列表。
配置PyAMF网关
接下来您需要设置Python方法,然后注册这些方法以实现前端可访问性。
1.在终端中,更改到myapp目录。
2.创建一个名为amfgateway.py的文件。
3.向新文件添加以下代码:
importpyamf
frompyamf.fleximportArrayCollection,ObjectProxy
frompyamf.remoting.gateway.djangoimportDjangoGateway
pyamf.register_class(Subscribe,'
com.subscription.vos.SubscriberVO'
defsaveEmail(request,email,notify):
subscribe=Subscribe()
subscribe.email=email
subscribe.receive_communication=notify
subscribe.save()
returnTrue
defgetEmailList(request):
emailList=Subscribe.objects.all()
returnemailList
services={
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 Flex4DjangoPython PyAMF 进行 开发