Django AJAX 增加
我想在Django里创建一个按钮或者链接,点击后能让一个模型的整数字段加一,但到现在为止我一直搞不明白。 我知道这个过程需要用到AJAX技术。我试着使用了Dajaxice
但遇到了很多麻烦。
请问现在推荐的做法是什么呢?谢谢!
目前我只是按照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);">点击我!</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/目录下。
我不知道该怎么办。谢谢!
编辑:提到静态文件后
看起来我没有正确放置我的静态文件。我按照Django文档关于如何提供静态文件的说明来做的。
请告诉我我这样做是否正确。我在"myProject/static"下创建了一个"static"文件夹,并把我的JS文件放在static/里。例如"myProject/static/prototype.js"
我还在设置里有 STATIC_URL='static'
和 'django.contrib.staticfiles',
在INSTALLED_APPS里。
现在我尝试用 <script type="text/javascript" src="{{ STATIC_URL }}prototype.js"/>
来引入prototype.js,但还是不行...
我现在做错了什么呢?谢谢!
*编辑:*看起来/static/应该放在应用文件夹里。真让人困惑...
1 个回答
记得要原子性地进行操作:
# 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()