我對Django和jQuery相當陌生,而且我無法從我的Django模型中獲取數據到我的jQuery中。將數組返回給.get從Django視圖中調用?
My Django models look like this:
class Exercise(models.Model):
name = models.CharField(max_length=30)
description = models.CharField(max_length=500)
rounds = models.IntegerField()
class Task(models.Model):
Exercise = models.ForeignKey(Exercise)
task = models.CharField(max_length=100)
solution = models.CharField(max_length=100)
description = models.CharField(max_length=500, blank=True)
difficulty_level = models.IntegerField()
我的jQuery:
var tasks = [];
// set up tasks
tasks.push(task("hun kaldes lilletøs","hun kaldes Lilletøs","Ret sætningen nedenfor, så der bliver stavet med store bogstaver efter reglerne.","Help tekst","Feedback tekst","2"));
tasks.push(task("john johnson","John Johnson","Ret sætningen nedenfor, så der bliver stavet med store bogstaver efter reglerne.","Help tekst","Feedback tekst","1"));
tasks.push(task("han hedder bent","han hedder Bent","Ret sætningen nedenfor, så der bliver
function task(text,solution, description, help, feedback, level){
return {
text:text,
solution:solution,
description:description,
help:help,
feedback:feedback,
level:level,
}
}
我創建了jQuery的第一次,我爲此希望有一種方式來獲得Django的數據到jQuery中我的數據結構。我的其餘jQuery非常依賴於以這種格式的數據。
以下是我到目前爲止: 從我的搜索我已經確定了兩種不同的可能方法。通過Django的模板語言直接解析數據到jQuery或通過ajax加載數據。我不知道哪種方法最有效率,以及應該如何去做到最好,但出於某些原因,我認爲使用Ajax是最好的解決方案。
jQuery .load方法似乎不是最合適的,因爲它的構建是直接將數據加載到HTML中。
jQuery .get方法可能可以做到這一點。下面是我試圖做什麼:
Views.py
:
def get_tasks(request):
task_list = Task.objects.filter(Exercise_id=1)
return HttpResponse(task_list)
jQuery
:
$.get("/get_tasks")
.done(function(data) {
var test = []
test.push(data);
alert(test)
});
工作本身阿賈克斯。數據被檢索,但它只顯示unicode表示,而不是對象。這可能是因爲我應該以另一種方式返回而不是HttpResponse,我只是沒有想到如何做到這一點。
所以問題是,我如何返回一個數組從Django視圖的jQuery .get調用?
編輯:
Here's the code I have so far, it's giving me a 500 error with the jQuery call though
import simplejson
from django.http import HttpResponse
def get_tasks(request):
task_list = Task.objects.filter(Exercise_id=1)
tasklist = dict((x.id, {
'task': x.task,
'solution': x.solution,
}) for x in task_list)
return HttpResponse(simplejson.dumps(dict(isOk=1,tasklist=tasklist)))
如果您有DEBUG = True,那麼您應該能夠看到使用Chrome瀏覽器查看Django調試消息,通過開發人員工具>網絡>>響應。 –
skoll