首先请原谅我的英语,这不是最好的。
我是django和python的新手,我尝试编程用户身份验证。 我使用了django文档,下面的代码一切正常:
def anges(request):
username = []
password = []
if request.method == "POST":
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
render_to_response ('registration/login.html', {'username': username, 'password': password})
if user is not None:
if user.is_active:
login(request, user)
angestellte_list = Employee.objects.all().order_by('lastname')
return render_to_response(("emp/angestellte.html"), {'angestellte_list': angestellte_list})
else:
return HttpResponse('disabled account')
else:
return HttpResponse('invalid login')
else:
return render_to_response ('registration/login.html', {'username':username, 'password':password})
但这只是一个函数,我想在我的views.py中使用这个面向我的其他函数的对象,因为DRY。 这只是第一次测试,但它不起作用,因为调试器说:“未定义全局名称'请求'” 那是我的代码:
class einloggen:
def __init__(self):
self.Username = request.POST['username']
def angestellte(self):
return HttpResponse("hello")
如何在类中使用请求变量,还有其他需要考虑的事项吗?
答案 0 :(得分:2)
很明显,你不能在request
类的__init__
中使用einloggen
变量,因为坦率地说,你不会将请求变量发送到构造函数中
我看不到你在视图中的任何地方制作einloggen
对象,但你可能应该这样:
class einloggen:
def __init__(self, request):
self.Username = request.POST.get('username')
然后在你的视图中(你已经获得了请求变量):
def anges(request):
myobj = einloggen(request)
但是,Django已经有了一个身份验证系统。而你使用它会好得多。你可以使用漂亮的装饰工具来“保护”视图。