Django, с помощью jQuery Basic! - PullRequest
       0

Django, с помощью jQuery Basic!

0 голосов
/ 08 сентября 2010

Я работаю над быстрым проектом, перечисляя результаты поиска от bing, и моя цель состоит в том, чтобы пользователь мог сохранять результаты поиска, которые они выполняют.однако мне удается перечислить результаты поиска в шаблоне, и сейчас я хочу сохранить элементы результатов в базе данных, используя AJAX!ну это моя первая попытка с ajax (jquery) и django!

template

{% for result in results %}<div class="resimgb">
    <a href="{{ result.MediaUrl }}"><img src="{{ result.Thumbnail.Url }}" /></a>
    <br />
    <input type="text" value="{{ result.MediaUrl }}" id="#urlink">
    <input type="submit" id="#savethis" name="add"></span><a herf="#" id="">save</a></div>{% endfor %}

JS:

<script type="text/javascript">
 $( document ).ready( function() {
  $( '#savethis' ).click( function() { data = 
            $( '#urlink' ).val(); $.get("/save/", function(data) {
              alert(data); 
          }); 
    }); 
}); 
</script>

-

Я не пишу представление, потому что на самом деле застрял там!отсюда мне сложно, потому что я немного запутался в

  • Как сохранить данные в моей модели?
  • Как отправить ответ в шаблон, чтобы подтвердить сохранениерезультат?
  • поскольку я новичок в jquery, я знаю, что это очень неправильно использовать id внутри цикла, кто-нибудь может подсказать, как решить эту проблему?

ТамЕсть много уроков по Django / jQuery, но большинство из них, через которые я прошел, в основном достаточно поверхностны, чтобы оставлять мне открытые вопросы !!

Ответы [ 2 ]

2 голосов
/ 08 сентября 2010

Очевидно, что у вас должна быть модель для хранения результатов поиска и форма для ввода пользовательского ввода (строка поиска).

Это создаст таблицу базы данных, которая будет содержать сохраненные условия поиска и связывать условия поиска с конкретным пользователем.

models.py

class Search(models.Model):
    user = models.ForeignKey(User)
    search = models.CharField(max_length=255)

Проще всего создать форму модели, в которой будет поле ввода, в которое пользователь может записать свой поисковый запрос, а также проверяет опубликованные данные, поскольку все вводимые пользователем данные должны быть проверены:

forms.py

class SearchForm(forms.ModelForm):
    class Meta:
          model = Search

Когда вы публикуете данные формы с помощью вызова AJAX из формы в представлении сохранения, данные публикации будут проверены, экземпляр с поисковым термином будет сохранен в базе данных после того, как вы выполните поиск данных.

Все, что осталось сделать, - это отправить все данные в контексте, заданные вам шаблоном, и отобразить его. После визуализации вы создаете словарь с данными, выводите его в JSON и возвращаете его с простым HttpResponse с определенным типом mime mimetype="application/json".

.

views.py

def save(request):
    if request.method == 'POST':
        form = SearchForm(request.POST):
        if form.is_valid():
             # Do some search with forms.cleaned_data['search'] and save it to result
             result = #SomeSearchCode...
             instance = form.save()

    html = render_to_string('ajax_template.html', {'search':instance, 'result':result}, RequestContext(request))
    if request.is_ajax():
         response = {'result':"Success", 'html':html}
         return HttpResponse(json.dumps(response), mimetype="application/json")
    retrun render_to_response('full_template.html', {'html':html }, RequestContext(request)

Шаблоны

Что касается шаблонов, full_template.html - это тот, который показывает форму поиска и включает ajax_template.html для отображения результатов, поэтому мы можем легко добавить это с помощью JavaScript. Таким образом, все работает даже без JavaScript.

JQuery

AJAX-вызов также прямой. Вы собираете данные из формы и отправляете их с data в представление, которое получит их как request.POST. success - это то, что обрабатывает данные, которые вы возвращаете из представления сохранения. В этом примере он добавляет html, визуализированный в представлении, к некоторому случайному div.

var dataString = 'search='+ $("search-field").val();;
$(function() {
    $("#search-form").live("click", function() {
        $.ajax({
            type: "POST",
            url:  $("#search-form").attr("action"),
            data: dataString,
            dataType: "json",
            success: function(data, textStatus, XMLHttpRequest) {
                jQuery(data["html"]).appendTo(".some-div");
            }
        });
        return false;
    });
});

Это не проверено, но я надеюсь, что это пролило некоторый свет на процесс.

0 голосов
/ 08 сентября 2010

Вам следует проверить библиотеку JSON-RPC, например rpc4django . Это позволяет вам сделать функции Python доступными из javascript через ajax. Хорошая библиотека RPC делает AJAX намного проще.

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