Проблемы с Django, запрос и вход? - PullRequest
0 голосов
/ 29 ноября 2010

Привет всем-
Я совершенно новичок в Django / python и прохожу учебное пособие для класса, расположенного здесь . У меня большая часть работы, но у меня проблемы. Я могу зарегистрировать пользователя, но, похоже, не могу войти. Для соответствующей части руководства найдите строку We’ll need one more form, a login form:, которая объясняет, как реализовать форму входа в систему. Я сделал это, и форма работает, и я могу «войти», и я получаю сессионный cookie на клиенте.

Проблема в том, что если вы прокрутите немного вниз, вы увидите We should add a welcome message and login/logout links to our templates:, в котором объясняется, как показать пользователю приветственное сообщение, если он вошел в систему, или ссылку для входа, если это не так. Проблема в том, что после входа я все равно получаю ссылку для входа!

Теперь учебник объясняет это. Он говорит, что мне нужно сделать две вещи: 1) Поместить следующий код в мой файл settings.py

TEMPLATE_CONTEXT_PROCESSORS = [
    "django.core.context_processors.request"
]

2) Создайте файл с именем middleware.py, в котором будет установлено значение request.user. Я сделал это и перезапустил свой сервер, но у меня все еще есть моя проблема. (Код приведен в учебнике, но для простоты я также вставлю его сюда):

from users.models import User
class UserMiddleware(object):
    def process_request(self, request):
        user_id = request.session.get("user_id")
        if user_id is not None:
            request.user = User.objects.get(pk=user_id)
        else:
            request.user = None

Я попытался немного изменить синтаксис этой первой части на следующий:

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.request",
)

, который лучше соответствует другим строкам в settings.py, но это тоже не помогло.

Я знаю, что это огромная стена текста, но кто-то может указать мне правильное направление? Само по себе это не задание, а учебник для последующего задания, так что помощь очень важна!

Ответы [ 2 ]

0 голосов
/ 29 ноября 2010

Вы добавили свой новый класс промежуточного программного обеспечения в список MIDDLEWARE_CLASSES в settings.py?

0 голосов
/ 29 ноября 2010

В реальной жизни вы бы использовали django.contrub.auth для входа / аутентификации.

Похоже, вы не установили request.session ["user_id"] в user.pk. Как я вижу, это делается в виде входа в систему в учебнике. Ваш логин выглядит так же, как в учебнике? У вас есть method = "post" в вашей форме входа в систему?

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