Python Django、请求和登录有问题吗?

Python Django、请求和登录有问题吗?,python,django,request,Python,Django,Request,大家好- 我是Django/python的新手,正在学习一个类的教程,该类位于。我已经把大部分工作做好了,但我有麻烦了。我可以注册用户,但似乎无法登录。对于本教程的相关部分,搜索我们还需要一个表单的行,一个登录表单:它解释了如何实现登录表单。我这样做了,表单工作了,我可以登录,我确实在客户端得到了一个会话cookie 问题是,如果你再向下滚动一点,你会看到我们应该在模板中添加欢迎消息和登录/注销链接:这说明了如果用户登录,如何向用户显示欢迎消息,如果用户未登录,如何向用户显示登录链接。问题是,登

大家好- 我是Django/python的新手,正在学习一个类的教程,该类位于。我已经把大部分工作做好了,但我有麻烦了。我可以注册用户,但似乎无法登录。对于本教程的相关部分,搜索我们还需要一个表单的行,一个登录表单:它解释了如何实现登录表单。我这样做了,表单工作了,我可以登录,我确实在客户端得到了一个会话cookie

问题是,如果你再向下滚动一点,你会看到我们应该在模板中添加欢迎消息和登录/注销链接:这说明了如果用户登录,如何向用户显示欢迎消息,如果用户未登录,如何向用户显示登录链接。问题是,登录后,我仍然会得到一个登录链接

现在,教程解释了这一点。它说我需要做两件事: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中的其他行,但这也没有帮助


我知道这是一堵巨大的文字墙,但有人能给我指出正确的方向吗?这本身不是作业,只是以后作业的教程,所以非常感谢您的帮助

在现实生活中,您会使用django.contrub.auth进行登录/身份验证


看起来您没有将request.session[user\u id]设置为user.pk。如我所见,这是在教程的登录视图中完成的。您的登录视图是否与教程中的完全相同?您的登录表单中是否有method=post?

您是否已将新的中间件类添加到settings.py中的中间件类列表中?

我的登录视图与教程中的相同。这是我的users/views.py文件:登录表单的HTML是method POST。不过,为了安全,我该怎么做呢?我继续做了,而且成功了。教程中没有提到它,不知道为什么,但它现在正在工作,谢谢!