jQuery + Django: передать 350 КБ текстовых данных с сервера на клиент? - PullRequest
2 голосов
/ 06 февраля 2011

Я создаю основанный на Django веб-сайт с jQuery, используемым во фронтэнде.Одним из аспектов этого является то, что сервер отправляет 200 записей следующего формата во внешний интерфейс:

field_1: up to 1000 character text
field_2: up to 200 character text
field_3: up to 200 character text
field_4: up to 200 character text
field_5: up to 200 character text
field_6: a boolean value

Что будет делать внешний интерфейс, в основном, будет отображать эти записи одну за другой без перезагрузки страницы, т.е.используя JavaScript / jQuery.

Итак, мой вопрос - какой самый удобный способ передать эти ~ 350 КБ в основном текстовых данных из Django в jQuery, чтобы эти записи можно было удобно хранить на стороне клиентаконечно, только для продолжительности сеанса) для целей, изложенных выше?Я открыт для предложений.

Ответы [ 2 ]

2 голосов
/ 06 февраля 2011

Это будет зависеть от того, что вы собираетесь делать с данными на клиенте.Просто отобразить это как текст в чем-то вроде 200

тегов?Или клиенту придется работать с этими данными?В этом случае вы можете отправить его в виде данных JSON.Затем он может быть прочитан Javascript прямо в структуру данных.
1 голос
/ 06 февраля 2011

Исходя из предоставленной вами дополнительной информации, я бы сказал, просто предоставьте данные в виде обычного шаблона Django, который вы вызываете по мере необходимости.Вам нужно всего лишь пинговать сервер один раз за next, а не 5 раз за следующий.Подайте его как обычный HTML и используйте jQuery для загрузки этого фрагмента прямо туда, куда он должен идти.Не беспокойтесь об этом в JSON, это больше работы для очень небольшого (если есть) усиления.

Пример:

#urls
url(r'^record/(?P<record_id>\d+)/$', 'site.views.record', name='record')

#views site/views.py
def record(request, record_id):
    obj = Record.objects.get(id=record_id)
    return render_to_response('site/record_partial.html', {
       'obj': obj
    }, context_instance=RequestContext(request))

#templates site/record_partial.html
    <div> {{ obj.field1 }} </div>
    <div> {{ obj.field2 }} </div>
    <div> {{ obj.field3 }} </div>
    <div> {{ obj.field4 }} </div>
    <div> {{ obj.field5 }} </div>

# Page
<div id='fields'>
</div>
<div id='next' data-page='3'> next >> </div>
<script type='text/javascript'>
    var next = $('#next').click(function() { 
        var page = $(next).data('page');
        $('#fields').load('/site/record/' + page + '/', function() {
            $(next).data('page', page+1); // incr page number
        });
    })
</script>
...