-

   rss_babki

 - e-mail

 

 -

 LiveInternet.ru:
: 15.02.2010
: 1
: 0
: 0

:


musicmans.ru | Django | GWT

, 15 2010 . 21:13 +
. , . . !

, gwt. eclipse 3.6 java.
GWT. gwt eclipse.

File > New > Web Application Project.

: genre
package: ru.musicmans

- Debug As > Web Application.

, . .

GWT Designer. quick start.

, gwt plugin (gwt plugin , gwt) gwt java project, ( - convert to) :



ru.musicmans.genre.GenreTree:



, . genre.java Design.



? rpc call gwt, django. ? . : javascript object, , , ( , ). REST ( ). SmartGWT, . GWT REST, Restlet Framework, django - django-piston.

Restlet Framework, Edition for Google Web Toolkit. ( java build path ).

Django-Piston

. django-piston - . , :

>c:\Python26\Scripts\pip.exe install hg+http://bitbucket.org/jespern/django-piston@c4b2d21db51a#egg=piston

. api, (r'^api/', include('api.urls')), urls.py. urls.py handlers.py. , __init__.py .
handlers.py:

from django.core.urlresolvers import reverse

from piston.handler import BaseHandler#@UnresolvedImport

from genre.models import GenreDirStyle#@UnresolvedImport

class GenreHandler(BaseHandler):
allowed_methods = ('GET', )
fields = ('name', 'type', 'url' )
model = GenreDirStyle

@classmethod
def url(self, genre):
return reverse('genre_genre', args=[genre.id])

def read(self, request, genre_id):
genre = GenreDirStyle.objects.get(id=int(genre_id))
return genre

urls.py:

from django.conf.urls.defaults import *

from piston.resource import Resource#@UnresolvedImport

from api.handlers import GenreHandler#@UnresolvedImport

genre_resource = Resource(handler=GenreHandler)

urlpatterns = patterns('',
url(r'^genre/(?P[^/]+)/$', genre_resource, name='api_genre_id'),
)


, http://localhost:8000/api/genre/3/ :

{
"url": "/genre/id/4/",
"type": 3,
"name": "Prog-Rock"
}

application/json firefox, , RESTClient Firefox.

.

widget gwt tree:






, , logLevel .

firebug , http://localhost:8000/api/genre/3 , SOP.

django-crossdomainxhr-middleware.py, ( firefox > 3.5).



.

, SOP . Jetty , , 8000.


war www\media\static\gwt\genre, windows, , :

www\media\static\gwt>mklink /d genre d:\path\to\gwt\war\

, ( - django) http://localhost:8000/media/static/gwt/genre/GenreTree.html?gwt.codesvr=127.0.0.1:9997 . gwt.codesvr gwt .

django, gwt . div id='genreTreeEntryPointId' , gwt root panel :
RootPanel rootPanel = RootPanel.get("genreTreeEntryPointId");

gwt "" django-, , http://localhost:8000/genre/tree/?gwt.codesvr=127.0.0.1:9997&genre_id=2 .

, :

- ( ). ( , ):

treeqs = GenreDirStyle.objects.raw("""SELECT t2.*
FROM genre_genredirstyle AS t1
LEFT JOIN genre_genredirstyle AS t2
ON t2.lft BETWEEN t1.lft AND t1.rgt
WHERE t1.lft < %s AND t1.rgt > %s AND t1.tree_id = 1 AND t2.depth-1 = t1.depth AND t2.tree_id = %s
ORDER BY t2.lft;""", (genre.lft, genre.rgt, genre.tree_id))

.
- div , , , ajax .
- JSON javascript, gwt :

private final Dictionary paramsDict = Dictionary.getDictionary("gwtGenreParameters");
String paramsDict.get("API_GENRES_MAIN_URL");

- JSON . .
: google-gin totoe ( ).
- ( ):

private class GenreTreeItemData
{
private int id;
private Boolean alreadyLoaded = false;
private String description;
}

setUserObject(Object).
- , gwt gwt standart. , , css, ( body). , , standard.css gwt\standard\ ( ).
- API from piston.doc import documentation_view.

:



ps. Aptana 3.0, Django PyDev ( , ctrl+space IDE, ?).


: [1] []
 

:
: 

: ( )

:

  URL