【问题标题】:django admin error - cannot access admin pagedjango 管理错误 - 无法访问管理页面
【发布时间】:2015-07-08 07:17:37
【问题描述】:

我刚刚开始了我的新 django 1.8 项目。我创建了一个超级用户并转到127.0.0.1:8000/admin/ 并从那里登录。登录后显示如下错误:

(1054, "Unknown column 'django_content_type.name' in 'field list'")

我四处搜索,只找到了一个相关问题,here

正如讨论中所说,我放弃了我的架构并重新创建了很多次;我仍然得到同样的错误。我数据库中的django_content_type 表只有三个字段:id、app_label 和model。它没有已弃用的“名称”。

另外,我可以访问其他网址,如/admin/auth//admin/auth/users/,但尝试添加更多用户会出现以下错误(我认为这也是由于与上述相同的问题):

Error creating new content types. Please make sure contenttypes is migrated before trying to migrate apps individually.

总的来说,我对 Django 很陌生。任何帮助将非常感激。谢谢。

这是完整的错误:

OperationalError at /admin/
(1054, "Unknown column 'django_content_type.name' in 'field list'")
    Request Method: GET
    Request URL:    http://127.0.0.1:8000/admin/
    Django Version: 1.7.5
    Exception Type: OperationalError
    Exception Value:    
    (1054, "Unknown column 'django_content_type.name' in 'field list'")
    Exception Location: /usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py in defaulterrorhandler, line 36
    Python Executable:  /usr/bin/python
    Python Version: 2.7.6
    Python Path:    
    ['/home/rahul/Development/rmgl_project',
     '/usr/local/lib/python2.7/dist-packages/virtualenv-12.1.1-py2.7.egg',
     '/usr/lib/python2.7',
     '/usr/lib/python2.7/plat-x86_64-linux-gnu',
     '/usr/lib/python2.7/lib-tk',
     '/usr/lib/python2.7/lib-old',
     '/usr/lib/python2.7/lib-dynload',
     '/usr/local/lib/python2.7/dist-packages',
     '/usr/lib/python2.7/dist-packages',
     '/usr/lib/python2.7/dist-packages/PILcompat',
     '/usr/lib/python2.7/dist-packages/gtk-2.0',
     '/usr/lib/pymodules/python2.7',
     '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
    Server time:    Wed, 8 Jul 2015 07:19:12 +0000

我意识到这个错误显示我的 django 版本为 1.7,而我使用 pip 安装了 django 1.8。我跑了python manage.py shell 并从那里检查了我的 django 版本(无法发布屏幕截图,代表不够高)。

$ python manage.py shell
>>> import django
>>> django.VERSION
(1, 8, 2, 'final', 0)
>>>

我该如何纠正这个问题?再次感谢。我正在使用 virtualenv。

编辑:添加 urls.py

"""rmgl_project URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.8/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Add an import:  from blog import urls as blog_urls
    2. Add a URL to urlpatterns:  url(r'^blog/', include(blog_urls))
"""
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
]

添加manage.py:

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE",     "rmgl_project.settings")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

【问题讨论】:

  • 您是如何设置数据库的? manage.py makemigrations; manage.py migrate?
  • @Evert,是的,就是这样。
  • 你能edit你的问题并添加你的主要urls.py(应该包含默认的管理员网址)吗?
  • 什么是django.__file__ btw?在运行which python 时你会得到什么?
  • which python 给出/home/rahul/.virtualenvs/rmgl_project/bin/python django.__file__'/home/rahul/.virtualenvs/rmgl_project/local/lib/python2.7/site-packages/django/__init__.pyc'

标签: python django admin


【解决方案1】:

问题在于 virtualenv - 它未启用。

为了检查 Django 的版本(和模块的路径),您可以在./manage.py 文件中添加以下行:

print(__import__('django')) # Should print the module information
print(__import__('django').__file__) # Should print the location of __init__.py file

就在if __name__ == '__main__' 行之后。

【讨论】: