Как поделиться информацией между Django и Javascript? - PullRequest
1 голос
/ 17 января 2011

Так что я довольно новичок в Django и Javascript (я использую JQuery), и мне интересно, если я делаю хак или есть более удобные способы отправки идентификаторов базы данных на стороне клиента на серверную часть django , Вот мой процесс:

У меня есть dataTable (http://datatables.net), в котором я отображаю строки данных, используя опцию bProcessing, чтобы использовать AJAX для извлечения записей из базы данных. URL в моем urls.py выглядит примерно так:

url(r'^assets/activitylog/(?P<cid>.*)$', views.getActivityTable_ajax, name="activitylog_table"),

и мой ajax-код, относящийся к dataTable, выглядит примерно так:

"sAjaxSource": "/assets/activitylog/" + getIDFromHTML(),

где функция javascript getIDFromHTML() захватывает <cid>, которая используется представлением Django, просто:

function getIDFromHTML(){
    // Simply return the text in the #release_id div element from the HTML
    return $("#release_id").html();
};

Это та часть, которая кажется мне "счастливой". Я вставляю в код моего шаблона идентификатор базы данных, который я использую в URL datatables (с display: none в css), чтобы я мог передать его обратно в представление. Большая часть этого необходима, потому что нельзя использовать теги шаблонов django в коде javascript, если код не встроен в сам HTML, чего я не делаю (и не буду)

Единственное, что я нашел, это изменил URL, чтобы избавиться от параметра, переданного в:

url(r'^assets/activitylog', views.getActivityTable_ajax, name="activitylog_table"),

и измените код вида на:

def getActivityTable_ajax(request):
    """Returns the activity for a given pid from HTTP GET ajax reqest"""

    pid = int(urlparse.urlparse(request.META['HTTP_REFERER']).path.split('/')[-1])
    # rest of view code here...

, поскольку нужный мне идентификатор находится в конце URL этого реферера.

Таким образом, мне не нужно возиться с встраиванием скрытого идентификатора базы данных в HTML и передачей его через ajax код представления совокупности таблиц.

Можно ли использовать HTTP_REFERER в объекте запроса таким образом? Я поступаю об этом совершенно неправильно?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 17 января 2011

... нельзя использовать теги шаблонов django в коде javascript, если код не встроен в сам HTML ...

Это неверно.Просто сделайте указатель <script> на что-то в вашем urlconf, затем просмотрите представление , соответствующим образом установите заголовок Content-Type для JavaScript и выведите его.

0 голосов
/ 17 января 2011

Я только что установил несколько таблиц данных на прошлой неделе с Django.
Единственное требование - ваш сервер отправляет структуру JSON с именем aaData, содержащую строки.

Вы также можете использовать этот полный пример в качестве основы, он более продвинут и содержит несколько методов, которые вы должны использовать в своих проектах (datatables.utils):
http://www.datatables.net/development/server-side/django

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...