Django 管理员:任何发布请求的 TypeError

Jan*_*cka 4 python django

我创建了一个新的 Django(v.1.11)项目并使用python manage.py createsuperuser我创建了一个用户。我可以使用此用户帐户登录到管理部分localhost:8888/admin。但是,我无能为力:每当我触发登录页面以外的POST 请求时,都会收到以下错误:

/admin/... 处的类型错误

slice indices must be integers or None or have an __index__ method

(“...”可以替换为auth/group/add/),但此行为是通用的,并非特定于此请求

以下回溯表明从页面解析 CSRF 令牌存在问题,但除了管理之外,我的应用程序中的其他页面没有出现此类问题。

Traceback:

File "/usr/local/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
  178.             response = middleware_method(request, callback, callback_args, callback_kwargs)

File "/usr/local/lib/python2.7/site-packages/django/middleware/csrf.py" in process_view
  298.                     request_csrf_token = request.POST.get('csrfmiddlewaretoken', '')

File "/usr/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py" in _get_post
  126.             self._load_post_and_files()

File "/usr/local/lib/python2.7/site-packages/django/http/request.py" in _load_post_and_files
  299.                 self._post, self._files = self.parse_file_upload(self.META, data)

File "/usr/local/lib/python2.7/site-packages/django/http/request.py" in parse_file_upload
  258.         return parser.parse()

File "/usr/local/lib/python2.7/site-packages/django/http/multipartparser.py" in parse
  198.                         data = field_stream.read(size=read_size)

File "/usr/local/lib/python2.7/site-packages/django/http/multipartparser.py" in read
  369.         out = b''.join(parts())

File "/usr/local/lib/python2.7/site-packages/django/http/multipartparser.py" in parts
  364.                     emitting = chunk[:remaining]

Exception Type: TypeError at /admin/auth/group/add/
Exception Value: slice indices must be integers or None or have an __index__ method
Run Code Online (Sandbox Code Playgroud)

有什么想法可能是什么问题吗?提前致谢。

Jan*_*cka 9

发现问题了。

为了将来的参考,问题是DATA_UPLOAD_MAX_MEMORY_SIZE项目设置中的关键有一个浮点值(10e6是Python中一个容易被忽视的浮点值)。它必须是一个整数。

  • 天啊,非常感谢,在使用浮点值(“10e6”!)作为“DATA_UPLOAD_MAX_MEMORY_SIZE”后,我确实遇到了这个问题 (3认同)
  • 你的回答很好。我使用的是“1024 ** 2 * 0.5”,它产生了“524288.0”(一个浮点数)。现在我用 `int(...)` 包装结果并且它有效! (2认同)