我正在尝试为我的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中。我真的不知道我是否需要进口任何东西或者我是否遗漏了什么。
答案 0 :(得分:0)
为什么要在最后一行的modify模块中实例化ModifiableConnection?由于这是全局级别,因此将在导入文件时执行。您已在视图中实例化对象,正确传递请求。
你应该在modify.py中删除最后一行。