Задача класса Джанго - PullRequest
0 голосов
/ 25 мая 2011

сначала простите за мой английский, он не самый лучший.

Я довольно новичок в 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 Ответ

2 голосов
/ 25 мая 2011

Совершенно очевидно, что вы не можете использовать переменную request в __init__ в классе einloggen, потому что, откровенно говоря, вы не отправляете переменную запроса в конструктор.

Я не вижу, чтобы вы создавали объект einloggen в любом месте вашего обзора, но вам, вероятно, следует что-то вроде:

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

и затем, по вашему мнению (где у вас есть переменная запроса):

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

Однако в Django уже есть система аутентификации. И вам было бы намного лучше, если бы вы использовали это. Вы можете использовать красивые декораторы, чтобы действительно легко и приятно «защищать» виды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...