【问题标题】:"unindent does not match any outer indentation level" while using FileField使用 FileField 时“未缩进与任何外部缩进级别不匹配”
【发布时间】:2012-05-07 16:10:52
【问题描述】:
class FileUploadModel(models.Model):
    title = models.CharField(max_length=50)
    uploaded_file = models.FileField(upload_to = 'bose')

错误:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 231, in execute
    self.validate()
  File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 266, in validate
    num_errors = get_validation_errors(s, app)
  File "/usr/local/lib/python2.6/dist-packages/django/core/management/validation.py", line 30, in get_validation_errors
    for (app_name, error) in get_app_errors().items():
  File "/usr/local/lib/python2.6/dist-packages/django/db/models/loading.py", line 158, in get_app_errors
    self._populate()
  File "/usr/local/lib/python2.6/dist-packages/django/db/models/loading.py", line 64, in _populate
    self.load_app(app_name, True)
  File "/usr/local/lib/python2.6/dist-packages/django/db/models/loading.py", line 88, in load_app
    models = import_module('.models', app_name)
  File "/usr/local/lib/python2.6/dist-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/home/bose/DJANGO/blog/blog/models.py", line 22
    uploaded_file = models.FileField(upload_to = 'bose')

IndentationError: unindent does not match any outer indentation level

我哪里错了?

【问题讨论】:

  • 需要更多上下文代码 .. 您是否显示了 manage.py 中的第 10 行以上?您能否展示一些周围的代码,尤其是在您展示的 3 行之前.. 很难知道发生了什么。您已经检查了制表符和空格,对吧?
  • 是的,我已经检查过了。删除 upload_file = models.FileField(upload_to = 'bose') 会导致错误消失!所以该行必须是问题孩子
  • 制表符是邪恶的,永远不要混合制表符和空格,将制表符转换为4个空格python.org/dev/peps/pep-0008/#tabs-or-spaces

标签: python django


【解决方案1】:

如果您使用 Komodo 编辑器,您可以按照其中一条类似错误消息中的建议进行操作:

1) 全选,例如Ctrl + A

2) 转到代码 -> 取消标签区域

3) 仔细检查缩进是否正确,保存并重新运行程序。

我正在使用 Python 3.4.2

【讨论】:

    【解决方案2】:

    好吧,如果您将代码直接复制到编辑框中,那么您的问题是您混合了制表符和空格。问题源中的title 行前面有一个制表符,而下一行前面有四个空格。

    有关更多信息,请参阅this question 及其答案。如果您希望 Python 在您同时使用制表符和空格时发出警告,您可以使用 -t 选项。

    【讨论】:

    • 只是好奇你在哪个编辑器中粘贴了这个? emacs 必须将所有内容都转换为空格.. 我看不到标签
    • 我直接看了一下编辑框。我不确定 stackoverflow 是如何工作的,但从外观上看,它使用 8 的制表位将源中的制表符转换为呈现文本中的空格。
    • 谢谢..这是一个很好的方法(没想到)。我也看到那里的标签。
    • 谢谢,问题解决了!但我还是不明白你是怎么知道那些是空格的:D
    • @SHOUBHIK BOSE,我刚刚点击了编辑链接。试试看——把光标放在title行的开头,按右箭头,你会看到,按第五次,光标会跳四个空格。
    猜你喜欢
    • 2017-08-12
    • 2020-08-14
    • 1970-01-01
    • 2010-12-15
    • 2010-10-04
    相关资源
    最近更新 更多