我在Javascript中有以下代码,它从下拉列表中获取用户名,并将他/她的“is_active”属性更改为true:
function acceptFunction(){
var select = document.getElementById("dropdown");
var elementText= select.options[select.selectedIndex].text;
var lbl = document.getElementById("lbl");
{% for user in list %}
{% ifequal user.username strUser %}
{{ user.is_active }}=true;
{% endifequal %}
{% endfor %}
var i;
for (i=0;i<select.length; i++) {
if (select.options[i].text==elementText) {
lbl.textContent=select.options[0].text;
select.remove(i);
}
}
}
“select”变量是一个下拉列表,“elementText”是网站用户选择当前时间的列表元素,“lbl”变量是用于打印所选元素的标签。
在views.py中,我有以下内容:
def acceptUserRequest(request):
list = User.objects.all()
strUser=''
return render(request, 'acceptUserRequest.html', {'list': list, 'strUser':strUser})
我在strUser中分配elementText的值时遇到了困难。 Django有没有办法实现这个目标?
谢谢。
答案 0 :(得分:1)
请记住,当用户向您的应用发出请求时,将处理该视图,然后使用JS代码生成模板。因此,如果您希望在视图中使用javascript代码中的数据,则需要发出请求GET或POST,具体取决于具体情况,因此视图可以获得此值。
例如,您可以使用以下GET请求http://yourURL/acceptUserRequest/&elementText=True
然后在你看来:
elementText = request.GET.get('elementText', '')
如果你想留在同一页面并使用ajax,就像我们在评论中讨论的那样做。这是一个非常简单的例子。您在Django中创建一个将接收请求的视图。
def accept_notification(request):
parameter = request.GET.get('parameter', '')
... Do somehting with the data...
您可以根据需要发送多个参数。 您需要为此视图添加网址,并且应该在HTML中的元素中附加一个侦听器。这样的事情。
$("radiobutton").click(function(){
$.get("http://www.your-url/accept_notification/¶meter=HELLO", function(data, status){
alert("Data: " + data + "\nStatus: " + status);
});
});
警报实际上是回调函数。在您的情况下,您可以将其留空或添加一段代码以在服务器响应后执行。