如何在 Django 中更新 request.user?

eug*_*ene 6 django request

我有一个 ajax 调用,它设置 request.user.my_field = value

当 ajax 成功时,我重新加载页面,location.reload(True) 我希望request.user.my_field视图中的函数现在已更新,但它具有旧值。

我怎样才能解决这个问题?

编辑

ajax调用:

$.ajax({
    type: 'POST',
    url: '{% url editor_select %}',
    data: {'editor_type':$(this).val(),
           success: function(response_data) {                                                                                                                                                                                                                   
               location.reload(true);                                                                                                                                                                                                                           
           }                                                                                                                                                                                                                                                    
          }                                                                                                                                                                                                                                                     
});     
Run Code Online (Sandbox Code Playgroud)

第一种观点:

def editor_select(request):
    """                                                                                                                                                                                                                                                                         
    called when user changes editor type to post question/answer                                                                                                                                                                                                                
    """

    editor_type = CharField().clean(request.POST['editor_type'])
    request.user.editor_type = editor_type
    request.user.save()
Run Code Online (Sandbox Code Playgroud)

第二种观点:

def second_view(request):
    print 'ask, editor_type:', request.user.editor_type
Run Code Online (Sandbox Code Playgroud)

我发现 AuthenticationMiddleware(将 request.user 设置为请求),在 ajax 调用和 location.reload() 之间没有被调用

所以嗯???

Ign*_*ams 5

退出视图之前保存模型。

request.user.save()
Run Code Online (Sandbox Code Playgroud)