Django类问题

时间:2011-05-25 12:02:17

标签: python 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中使用这个面向我的其他函数的对象,因为DRY。 这只是第一次测试,但它不起作用,因为调试器说:“未定义全局名称'请求'” 那是我的代码:

class einloggen:

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

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

如何在类中使用请求变量,还有其他需要考虑的事项吗?

1 个答案:

答案 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已经有了一个身份验证系统。而你使用它会好得多。你可以使用漂亮的装饰工具来“保护”视图。