首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django 3 Python 3.8白噪声不提供request.user服务

Django 3 Python 3.8白噪声不提供request.user服务
EN

Stack Overflow用户
提问于 2020-07-24 14:41:54
回答 2查看 103关注 0票数 0

我得到了错误

代码语言:javascript
复制
'WSGIRequest' object has no attribute 'user'

在写的时候:

代码语言:javascript
复制
x.user = request.user
x.save()

在Django中,我将whitenoise更新为最新版本,我非常确定post请求会附加用户。如何在Django中从post请求返回request.user?

我的一些设置:

代码语言:javascript
复制
INSTALLED_APPS = (
    'django_admin_bootstrapped',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'contacts',
    'pytz',
    'registration',
    'crispy_forms',
    'storages',
    'el_pagination',
    'django.contrib.sitemaps',
)

MIDDLEWARE = [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
]

MIDDLEWARE_CLASSES = [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
]

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
#     'django.template.loaders.eggs.Loader',
)
TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
    'django.core.context_processors.request',
)
EN

回答 2

Stack Overflow用户

发布于 2020-07-24 15:32:40

遵循白噪声文档:Edit your settings.py file and add WhiteNoise to the MIDDLEWARE list, above all other middleware apart from Django’s SecurityMiddleware

例如:

代码语言:javascript
复制
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    ...
票数 0
EN

Stack Overflow用户

发布于 2020-07-24 15:59:19

为了从HttpRequest.user https://docs.djangoproject.com/en/3.0/ref/request-response/#attributes-set-by-middleware获取方法,我不得不将django.contrib.auth.middleware.AuthenticationMiddleware插入到中间件中

代码语言:javascript
复制
MIDDLEWARE = [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
]

MIDDLEWARE_CLASSES = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',

]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63068186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档