2011-05-25 145 views
0

请问我的英文不是最好的。Django课堂问题

我对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等功能此对象,因为干的。 这只是第一个测试,但它不工作,因为调试器说:“全球名‘请求’没有定义” 这是我的代码:

class einloggen: 

     def __init__(self): 
       self.Username = request.POST['username'] 

     def angestellte(self): 
       return HttpResponse("hello") 

我如何使用请求变量的类或还有什么需要考虑的吗?

+1

Django已经有一个完整的用户认证应用程序。为什么写自己的? – 2011-05-25 12:05:54

+0

...或者换句话说,你需要什么'django.contrib.auth'缺乏? – 2011-05-25 12:16:02

回答

2

很明显,你不能在einloggen类中使用request变量__init__,因为,坦率地说,你不会将请求变量发送给构造函数。

我看不到你在视图作出einloggen对象无论在任何地方,但你应该喜欢的东西:

class einloggen: 
    def __init__(self, request): 
     self.Username = request.POST.get('username') 

,然后在您的视图(你已经得到了请求变量) :

def anges(request): 
    myobj = einloggen(request) 

然而,Django的已经有一个认证系统。使用它你会好得多。你可以使用美丽的装饰,使它真的很容易,很好«保护»意见。