Руководство в организации больших [закрытых] проектов Django

У меня не было никакого успеха в решении заголовка - они никогда не были получены в моем методе ajaxSuccess / ajaxComplete. Я использовал ответ Штега с пользовательским ответом, но я немного изменил сторону JS. Я настраиваю метод, который я вызываю в каждой функции, поэтому я могу использовать стандартные методы $.get и $.post.

function handleAjaxResponse(data, callback) {
    //Try to convert and parse object
    try {
        if (jQuery.type(data) === "string") {
            data = jQuery.parseJSON(data);
        }
        if (data.error) {
            if (data.error == 'login') {
                window.location.reload();
                return;
            }
            else if (data.error.length > 0) {
                alert(data.error);
                return;
            }
        }
    }
    catch(ex) { }

    if (callback) {
        callback(data);
    }
}

Пример использования в нем ...

function submitAjaxForm(form, url, action) {
    //Lock form
    form.find('.ajax-submit').hide();
    form.find('.loader').show();

    $.post(url, form.serialize(), function (d) {
        //Unlock form
        form.find('.ajax-submit').show();
        form.find('.loader').hide();

        handleAjaxResponse(d, function (data) {
            // ... more code for if auth passes ...
        });
    });
    return false;
}
31
задан Sam 9 February 2009 в 20:58
поделиться

2 ответа

Каждое "приложение" должно быть маленьким - единственный допускающий повторное использование объект плюс несколько связанных таблиц. У нас есть приблизительно 5 плюс/минус 2 таблицы на прикладную модель. Большинство наших полдюжины приложений мало, чем 5 таблиц. У каждого есть нулевые таблицы в модели.

Каждое приложение должно быть разработано, чтобы быть одним допускающим повторное использование понятием. В нашем случае каждое приложение является частью полного сайта; приложения могли быть удалены и заменены отдельно.

Действительно, это - наша стратегия. Когда наши требования расширяются и назревают, мы можем удалить и заменить приложения независимо друг от друга.

Это должно хорошо иметь приложения, зависят друг от друга. Однако зависимость должна быть ограничена очевидными вещами как "модели" и "формы". Кроме того, приложения могут зависеть от имен в URL друг друга. Следовательно, Ваш именованный URL должен иметь форму как "представление приложения" так эти reverse функция или эти {% url %}, тег может найти их правильно.

Каждое приложение должно содержать свои собственные пакетные команды (обычно через формальную Команду, которая может быть найдена django-admin сценарий.

Наконец, что-либо это более сложно, чем простая модель или форма, это совместно используется, вероятно, не принадлежит ни одному приложению, но должна быть отдельная общая библиотека. Например, мы используем XLRD, но переносим части его в нашем собственном классе, таким образом, он больше похож на встроенное csv модуль. Эта обертка для XLRD не является надлежащей частью никакого приложения, к он - отдельный модуль вне приложений Django.

38
ответ дан 27 November 2019 в 22:26
поделиться

Я нашел, что это полезно смотреть на большой открытый исходный код проекты Django и принять во внимание, как тот проект делает это. Сайт Django имеет хороший список проектов с открытым исходным кодом:

http://code.djangoproject.com/wiki/DjangoResources#Open-SourceDjangoprojects

, Как делает Google (хотя большинство из них является меньшими дополнительными тегами шаблона и Промежуточным программным обеспечением:

http://code.google.com/hosting/search?q=label:django

, Конечно, просто потому что один проект делает это, один путь не означает, что тем путем является Правильный Путь (или Неправильный Путь). Некоторые из тех проектов более успешны, чем другие.

В конце, единственный способ действительно учиться, какие работы и не работают, состоит в том, чтобы попробовать его самостоятельно. Все подсказки и подсказки в мировой привычке помогают, если Вы не пробуете ее сами, но они могут помочь Вам начать в правильном направлении.

10
ответ дан 27 November 2019 в 22:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: