1

django-restのデータテーブルにこのライブラリを使用しています。ビューのrequest.user セッションを期待して、すべてが正常に機能しています。django-datatableがユーザー トークンを認証していないように思われるため、request.user は匿名ユーザーを返します。また、ヘッダーでユーザートークンを送信しなくても同じことがアクセスできます。

これが私のコードです:

class MyDataTableView(BaseDatatableView):
    """
    """
    model = MyModel
    columns = [***columns** ]
    order_columns = [***columns**]

    def get_initial_queryset(self):
        """
        initial queryset for 
        """
        self.request.user -----> returns antonymous user 

        queryset = self.model.objects
        return queryset
4

2 に答える 2

0

トークン JS を Datatables 開始 JS ファイルに追加しましたか? django-datatables は正しい JSON 文字列を作成するだけです。クッキーの開始は異なります。

私はこれでしばらく戦いましたが、欠けていたのは、クッキーを取得して設定する必要があるということでした:

// using jQuery
function getCookie(name) {
    var cookieValue = null;
    if (document.cookie && document.cookie !== '') {
        var cookies = document.cookie.split(';');
        for (var i = 0; i < cookies.length; i++) {
            var cookie = jQuery.trim(cookies[i]);
            // Does this cookie string begin with the name we want?
            if (cookie.substring(0, name.length + 1) === (name + '=')) {
                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                break;
            }
        }
    }
    return cookieValue;
}
var csrftoken = getCookie('csrftoken');

function csrfSafeMethod(method) {
    // these HTTP methods do not require CSRF protection
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
    beforeSend: function(xhr, settings) {
        if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
            xhr.setRequestHeader("X-CSRFToken", csrftoken);
        }
    }
});

これは、たとえば Datatables パラメータを設定した場所の上にあります。

let table = $('#datatables').DataTable({
    "processing": true,
    "serverSide": true,
     stateSave: true,
    "ajax": {

.........

于 2018-11-14T16:36:32.910 に答える