簡體   English   中英

Django:如何在 javascript 中訪問當前登錄用戶的 ID?

[英]Django : How to access current logged in user's id in javascript?

我在視圖集中定義了一個 get_queryset 方法。

class BooksViewSet(ReadOnlyModelViewSet):
    serializer_class = BooksSerializer
    permission_classes = (IsAuthorizedToAccess, )

    def get_queryset(self):
        queryset = Books.objects.all();
        return queryset

使用 javascript 我想在一側顯示當前用戶的書籍,在右側顯示其他所有用戶的書籍。 我完成了所有代碼,但無法訪問我的 js 文件中的當前用戶 ID。

if(auther.id == "current user id")
{
}

我想像這樣訪問用戶標識。 對於我所做的所有搜索,我知道如何將此用戶 ID 添加為隱藏字段或傳遞此 ID。但我不能,因為該方法只允許返回查詢集對象。

誰能幫我理解這一點。

編輯:我的解決方案

在我看來,我定義了 get_context_data 方法。

 def get_context_data(self, *args, **kwargs):
    ctx = super(class_name, self).get_context_data(*args, **kwargs)
    ctx["author_id"]=self.request.user.id
    return ctx

在我的模板中,我定義了一個隱藏字段:

<input type="hidden" id="userId" value={{author_id}}>

在我的 JS 中:

var x= document.getElementById("author_id").value;

從 Django 2.1 開始,專門針對此用例引入了一個新的內置模板標簽:json_script。

https://docs.djangoproject.com/en/dev/ref/templates/builtins/#json-script

新標簽將安全地序列化模板值並防止 XSS。

沒有必要設置任何上下文變量,因為 request.user 已經包含在每個視圖中:

模板.html

{{ request.user.id|json_script:"user_id" }}

腳本.js

const user_id = JSON.parse(document.getElementById('user_id').textContent);

您也可以使用模板標簽。 像 {{author.id}} 您也可以將值分配給 javascript 變量然后使用它

var id = {{ author.id }}

如果 javascript 在您的模板文件中,您可以像訪問其他文件一樣訪問它:

{% for author in authors %}
    if('{{author.id}}' == "current user id")
    {
    }

{% endfor %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM