我想将视图中的一个变量传递给模板。
但我正在将该模板用于另一个视图
我正在使用该模板进行此视图
def poll(request):
questions = PollQuestion.objects.all()
return render(request,'poll/poll.html',{'questions':questions})
我想使用相同的模板
def score(request):
score1=UserProfile.objects.all()
print score1
print type(score1)
return render(request, 'poll/poll.html',{'score1': score1})
我有model.py
class UserProfile(models.Model):
user = models.ForeignKey(User)
score = models.IntegerField(max_length = 50, blank = True,null = True)
我希望在poll.html中将该分数转换为jquery变量,并希望在修改该分数后再次存储到数据库。
请帮帮我。
答案 0 :(得分:2)
我认为你认为你有两个问题:
解决第一个问题,你可以尝试:
{% if score1 %}
...
{% endif %}
对questions
做同样的事情;将相应的代码放在...
要解决第二个问题,您可以在views.py中尝试下面的内容:
if request.METHOD == 'GET':
...
# show score
...
elif reqeust.METHOD == 'POST':
...
# store to database
...
如果您希望使用request.METHOD
来区别,请对html模板进行一些修改。
答案 1 :(得分:1)
我不确定是什么问题?你知道答案,而你正在这样做。
如果您正在寻找如何传递值并在jquery中使用,那么
您已经解决了将值传递给view的问题。
在javascript中使用
var score1 = {{score1}}
现在你可以在jquery中使用score1作为变量
如何将数据发回服务器
这是步骤, 我假设您正在使用ajax调用将此值传递给服务器.. 注意 - 我给出的例子是在url params中传递它,你可以做formdata或json
$.ajax({
url: "urls_to_score_handler?score1=" + score1 ,
}).done(function()
{ alert('job dne'); });
答案 2 :(得分:1)
Personaly,我会选择使用2个html模板,即使它们是相同的。
但是,为了对两个视图使用相同的html模板,请确保从视图传递的词典具有相同的键:在miment它们是不同的,一个有“问题”作为键入项,而另一方有'得分1'。
另一个解决方案是制作模板中的条件:'{%if questions%}''和'{%if score1%}'
答案 3 :(得分:0)
您是否注意到您正在为jQuery分配Queryset?
score1=UserProfile.objects.all()
返回一个Queryset,甚至不是单个对象,当然也没有jQuery可能理解的json。
即使是单个django对象也不会被jQuery接受,因为它不了解django / python。您需要首先将单个/多个对象转储到json,然后在jQuery中分配它。
对于QuerySet-Serialization,请参阅文档。
我希望我能指出你正确的方向。