Django:如何将模板变量分配给视图变量?

时间:2017-05-15 19:35:52

标签: javascript django

我在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有没有办法实现这个目标?

谢谢。

1 个答案:

答案 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/&parameter=HELLO", function(data, status){
            alert("Data: " + data + "\nStatus: " + status);
        });
    });

警报实际上是回调函数。在您的情况下,您可以将其留空或添加一段代码以在服务器响应后执行。