Для переменная :
foo.h:
class foo
{
private:
static int i;
};
foo.cpp:
int foo::i = 0;
Это вызвано тем, что может только быть один экземпляр foo::i
в Вашей программе. Это - вид эквивалента extern int i
в заголовочном файле и int i
в исходном файле.
Для постоянный можно поместить значение прямо в объявление класса:
class foo
{
private:
static int i;
const static int a = 42;
};
Если вы хотите создать новую модель, как в GWT, так и в Django, самый простой способ сгенерировать код - начать с очень простого определения модели, например
classname
attribute1 type1
attribute2 type2
Разбор, который с небольшим Python очень прост, и поэтому генерирует код как для Django, так и для GWT, как только вы проанализируете похожие строки . Для настройки как Django, так и GWT потребуется немного больше работы. Учет внешних ключей сложнее. Не забудьте о крошечном сгенерированном методе для сериализации объектов, например, в формате JSON.
Первым рефлексом, который у меня возник, было использование интроспекции в Python, но затем у меня возникли проблемы при самоанализе полей внешнего ключа в моделях django. Может быть, мне стоит взглянуть на код проекта django-docs (доступный в google code).
Наконец, чтобы ускорить разработку GWT + Django, вы можете использовать HTTP-прокси-сервлет в режиме хоста, чтобы не нужно компилировать ваш GWT-материал каждый раз, когда вы хотите запустить свой интерфейс GWT с серверной частью Django. Сервлет на http://www.servletsuite.com/servlets/httpproxy.htm , вероятно, сделает свое дело.
Вам не обязательно вручную создавать все объекты Django в JS. GWT состоит только из объектов пользовательского интерфейса и взаимодействует с серверной частью Django для получения данных модели для отображения в браузере и для отправки обновлений обратно. Я использовал серверные части Django как с интерфейсами Adobe Flex, так и с GWT, и ни в том, ни в другом случае мне не приходилось воссоздавать какие-либо объекты Django в JS. Тем не менее, я использовал настраиваемые кодировщики JSON в своей серверной части. Это было сделано для того, чтобы я мог отправлять только информацию, необходимую для пользовательского интерфейса,
Очень сложно вручную повторять себя с двумя причудливыми фреймворками, такими как GWT и Django, что в конечном итоге так расстроило меня, что я отказался от этого (я написал первую статью, на которую вы ссылались ).
В конце концов, я переключился на GWT / Java, где Java была Google App Engine. Конечно, есть компромиссы. Мне кажется, что Java сложнее настроить, но как только она станет проще. В конце концов, DRY изречение оказалось для меня слишком похожим на сирену. С GWT / GAE ваши объекты просто проходят сквозь них, и вам не нужно заставлять свой мозг переключаться между языками. Теперь поговорим о LiveCycle и Flex. ;)
Надеюсь, это имело смысл и помогло - это была долгая неделя! :)
PS, вот ' это новое место для этого GWT / Django Tutorial-ish Сообщение
В моем проекте Django / GWT я использую django-поршень для предоставления моделей Django через REST API в формате JSON. Посетите веб-сайт поршня, чтобы узнать больше о том, как этого добиться http://bitbucket.org/jespern/django-piston/wiki/Home .
Затем, на стороне GWT, вам нужно только создать типы оверлеев для ваших моделей Django ( DevGuideCodingBasicsOverlay ).
Я использую gwt-dispatch ( http://code.google.com/p/gwt-dispatch/ ) с добавлением некоторых возможностей REST для получения моих моделей из серверной части Django, но вы можете использовать вас все, что вы хотите ( HttpRequestBuilder
), затем используйте GWT JSONParser
, и, получив JavaScriptObject
и проведя преобразование, вы получите желаемую модель в GWT. Это может показаться слишком сложным, но это не так, как раз наоборот, им очень удобно пользоваться.