NameError:尝试请求user.connection和user.dn时未定义名称'request'

时间:2018-03-12 09:59:29

标签: python django ldap

我正在尝试为我的webapp请求登录用户的连接和dn。我目前使用LDAP,我在modify.py中有这个ModifiableConnection类。用户应该在基于GUI的应用程序中编辑他的名字,它应该在ldap中自动更改。

from ldap3 import Server, Connection, ALL, MODIFY_REPLACE


class ModifiableConnection(object):
    def __init__(self, connection, dn):
        self.conn = connection
        self.dn = dn

    def modify_attr(self, attrname, values):
        modlist = [(MODIFY_REPLACE, attrname, values)]
        self.conn.modify(dn, self.conn.user, modlist)

    @property
    def firstname(self): pass

    @firstname.setter
    def firstname(self, val):
        self.modify_attr('givenName', [val])

    @property
    def lastname(self): pass

    @lastname.setter
    def lastname(self, val):
        self.modify_attr('sn', [val])

mod_con = ModifiableConnection(request.user.connection, request.user.dn)

这就是我所说的(views.py):

def edit_profile(request):
if request.method == 'POST':
    form = EditProfileForm(request.POST, instance=request.user)

    if form.is_valid():
        mod_con = ModifiableConnection(request.user.connection, request.user.dn)
        mod_con.firstname = request.POST['first_name']
        mod_con.lastname = request.POST['last_name']
        form.save()
        return redirect(reverse('accounts:view_profile'))
else:
    form = EditProfileForm(instance=request.user)
args = {'form': form}
return render(request, 'accounts/edit_profile.html', args)

这是我得到的错误:

mod_con = ModifiableConnection(request.user.connection, request.user.dn)
     

NameError:未定义名称“请求”

错误在我的modify.py中。我真的不知道我是否需要进口任何东西或者我是否遗漏了什么。

1 个答案:

答案 0 :(得分:0)

为什么要在最后一行的modify模块中实例化ModifiableConnection?由于这是全局级别,因此将在导入文件时执行。您已在视图中实例化对象,正确传递请求。

你应该在modify.py中删除最后一行。