gpt4 book ai didi

python - “SessionStore”对象没有属性 'GET'

转载 作者:行者123 更新时间:2023-12-01 07:47:01 28 4
gpt4 key购买 nike

此代码有什么问题,它会生成以下错误:

>   'SessionStore' object has no attribute 'GET'

这是代码:

def blog_detail(request, blog_slug):
blog = get_object_or_404(Blog, slug=blog_slug)
session_key = 'blog_views_{}'.format(blog.slug)
if not request.session.GET.get('session_key', False)
blog.blog_views += 1
blog.save()
request.session['session_key'] = True

return render(request, 'blogs/blog-detail.html', {'blog':blog})

我认为我使用 request.session 做错了。你能帮我解决这个问题吗,谢谢。

编辑:回溯

Environment:


Request Method: GET
Request URL: http://localhost:8000/dramatically-productivate-global-functionalities-whereas-reliable-internal-or-organic-sources

Django Version: 2.2.1
Python Version: 3.7.2
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blogs',
'users',
'crispy_forms']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "E:\Practice\new-blog\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)

File "E:\Practice\new-blog\lib\site-packages\django\core\handlers\base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)

File "E:\Practice\new-blog\lib\site-packages\django\core\handlers\base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "E:\Practice\new-blog\src\blogs\views.py" in blog_detail
53. if not request.session.GET.get('session_key', False):

Exception Type: AttributeError at /dramatically-productivate-global-functionalities-whereas-reliable-internal-or-organic-sources
Exception Value: 'SessionStore' object has no attribute 'GET'

最佳答案

这里有两个错误:

  • 您不能使用 request.session.GET.get(..) 因为 SessionBase 对象没有没有 GET 属性;和
  • 您使用了字符串文字 'session_key' 而不是标识符。

你可能想写:

def blog_detail(request, blog_slug):
blog = get_object_or_404(Blog, slug=blog_slug)
session_key = 'blog_views_{}'.format(blog.slug)
if not request.session<b>.get(session_key</b>, False<b>)</b>:
blog.blog_views += 1
blog.save()
request.session[<b>session_key</b>] = True

return render(request, 'blogs/blog-detail.html', {'blog':blog})

我们可以使 if 语句更短一些,因为 .get(..) 默认情况下返回具有真实性的 None 错误以及:

def blog_detail(request, blog_slug):
blog = get_object_or_404(Blog, slug=blog_slug)
session_key = 'blog_views_{}'.format(blog.slug)
if not request.session.get(session_key):
blog.blog_views += 1
blog.save()
request.session[session_key] = True

return render(request, 'blogs/blog-detail.html', {'blog':blog})

所以这里我们使用 request.session.get(..) 并使用 session_key 标识符,而不是文字。如果我们使用'session_key',我们只需询问 session 是否有 key 'session_key',而不是'blog_views_some-title'

关于python - “SessionStore”对象没有属性 'GET',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56413478/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com