Джанго AJAX инкремент - PullRequest
       3

Джанго AJAX инкремент

0 голосов
/ 11 апреля 2011

Я просто пытаюсь создать кнопку или ссылку в Django, которая при нажатии будет увеличивать модель. IntegerField, но до сих пор ужасно запутался. Я понимаю, что я должен AJAX-если этот процесс. Я пытался использовать Dajaxice

но в итоге столкнулся со многими неприятностями.

Каков приемлемый способ сделать это? Спасибо!

Пока я просто следую учебному пособию Даяксице.

Мой base.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> {% load dajaxice_templatetags%}

Мой блог {% dajaxice_js_import%}

    <script type="text/javascript">
        function my_js_callback(data){
            if(data==Dajaxice.EXCEPTION){
                alert('Error! Something happens!');
            } else {
                alert(data.message);
            }
        }
    </script>
</head>
<body>
    <h1><a href=””>My Blog</a></h1>
    {% block content %}{% endblock %}
</body>

Внутри этого блока у меня есть <a href="" onclick="Dajaxice.example.myexample(my_js_callback);">Click me!</a>

этот код {% dajaxice_js_import %} генерирует <script src="/dajaxice/dajaxice.core.js" type="text/javascript" charset="utf-8"></script>, что просто http://localhost:8000/dajaxice/dajaxice.core.js

Пока проблема в том, что этот файл не может быть найден, и все же я поместил его в / templates / dajaxice /

Не уверен, что делать. Спасибо!

Редактировать после упоминания статических файлов

Похоже, я неправильно размещаю свои статические файлы. Я следовал инструкциям в Документах Джанго, как обслуживать статические файлы

Дайте мне знать, правильно ли я это сделал. Я создал папку "static" в разделе "myProject / static". Я поместил мои файлы JS в static / Например, «myProject / static / prototype.js»

У меня также есть STATIC_URL='static' и 'django.contrib.staticfiles', в INSTALLED_APPS

Я сейчас пытаюсь захватить prototype.js, используя <script type="text/javascript" src="{{ STATIC_URL }}prototype.js"/>, но все равно безрезультатно ...

Что я делаю не так сейчас? Спасибо! * Редактировать: * выглядит как / static / должно быть внутри папки приложения. Как сбивает с толку ...

1 Ответ

2 голосов
/ 11 апреля 2011

Не забудьте сделать это атомарно:

# models.py
class Page(models.Model):
    hits = models.PositiveIntegerField()

# views.py
def hit(request, page_pk):
    Page.objects.filter(pk=page_pk).update(hits=F('hits')+1)
    return HttpResponse()

… или использовать транзакцию:

# views.py
from django.db.decorators import commit_on_success

@commit_on_success
def hit(request, page_pk):
    page = Page.objects.filter(pk=page_pk)
    page.hits += 1
    page.save()
    return HttpResponse()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...