-
使用之前,安装好Django3
-
准备好Xadmin
有好几种方法:
方法一:pip install xadmin(可能会抛出中文集错误)
方法二:pip install 本地下载包.zip的路径
方法三:pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2
(pip install https://github.com/sshwsfc/xadmin/tarball/master)
安装后,可用pip list 查看版本(Django 3.1.7 + xadmin 0.6.1) -
创建Django项目:
django-admin startproject 项目名 -
修改配置settings.py:
INSTALL_APPS = [
……
‘xadmin’,
‘crispy_forms’,
‘reversion’,
]
这是三个xadmin的依赖包 -
在urls.py下进行配置:
# 导入xadmin应用
import xadmin
xadmin.autodiscover()from xadmin.plugins import xversion
xversion.register_models()
urlpatterns = [
path(‘admin/’, xadmin.site.urls) # 注意这里是xadmin
] -
配置数据库:(可选,毕竟有默认的sqlite3小型数据库,这里我用mysql8,注意最好使用mysql5以上的)
第一步:在__init__.py加入:
import pymysql # 导入mysql库,注意要使用pip install pymysql
pymysql.install_as_MySQLdb() # 设置pymsql为Django默认数据库连接驱动
同样在settings.py修改配置:
DATABASES={
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’, # 数据库引擎
‘NAME’: ‘mydb’, # 数据库名,注意安装好mysql后要建一个数据库
‘USER’: ‘root’,
‘PASSWORD’: ‘*****’, #数据库密码
‘HOST’: ‘localhost’,
‘PORT’: 3306
}
} -
试着运行会报下错:
运行:python manage.py runserver 8000
报错:ImportError: cannot import name ‘six’ from ‘django.utils’ (D:\Python\lib\site-packages\django\utils_init_.py)
解决:
第一步:在安装目录中找到six.py文件(我的在D:\Python\Lib\site-packages\six.py)
第二步:将其复制到site-packages/django/utils(我的D:\Python\Lib\site-packages\django\utils)
第三步:修改:由上图所示蓝色路径所示,就是报错文件路径,点击进去,修改,如下图:
8. 解决下一个问题:
报错:ImportError: cannot import name ‘python_2_unicode_compatible’ from ‘django.utils.encoding’
解决(老规矩,点击上图蓝色路径,进入错误文件修改):
# from django.utils.encoding import python_2_unicode_compatible, smart_text 这是未改前
from six import python_2_unicode_compatible # 改之后
报错:
ImportError: cannot import name ‘pretty_name’ from ‘django.forms.forms’
解决:
# from django.forms.forms import pretty_name
from django.utils import formats, six
10.
报错(注意:此错误会在多个文件中产生,后续会多次出现,解决方法是一样的,可以全部一起修改):
ModuleNotFoundError: No module named ‘django.core.urlresolvers’
解决:
# from django.core.urlresolvers import reverse
from django.urls import reverse
报错:
ModuleNotFoundError: No module named ‘django.contrib.staticfiles.templatetags’
解决:
if ‘django.contrib.staticfiles’ in settings.INSTALLED_APPS:
# from django.contrib.staticfiles.templatetags.staticfiles import static
from django.templatetags.static import static
else:
from django.templatetags.static import static
12.
报错(注意:也有几处,要一个一个改):
TypeError: init() missing 1 required positional argument: ‘on_delete’
解决:
在user最后加上外键约束 on_delete=models.CASCADE
报错:同10一样:ModuleNotFoundError: No module named ‘django.core.urlresolvers’
报错:TypeError: init() takes 1 positional argument but 6 were given
解决:
修改为 forms.Field.init(self),去掉后面参数
报错:ImportError: cannot import name ‘login’ from ‘django.contrib.auth.views’
解决:
注意:此时问题并未完全解决
要先注释掉同文件的current_app(有两处,一处是登录,一处是登出,都为同一文件下):
仍在同一文件下,修改return(我将LoginView as login,LogoutView as logout):
报错:ImportError: cannot import name ‘FieldDoesNotExist’ from ‘django.db.models.fields’
解决:
pip install django-advanced-filters
# from django.db.models.fields import FieldDoesNotExist
from django.core.exceptions import FieldDoesNotExist
17.
报错:ImportError: cannot import name ‘QUERY_TERMS’ from ‘django.db.models.sql.query’
解决:
# from django.db.models.sql.query import LOOKUP_SEP, QUERY_TERMS
from django.db.models.sql.query import LOOKUP_SEP, Query
同一文件下还有哟!!
报错:ModuleNotFoundError: No module named ‘requests’
解决:
这是因为我未安装requests,所以报的错。 pip install requests 安装一下
报错:ImportError: cannot import name ‘FieldDoesNotExist’ from ‘django.db.models’
此错误之前遇到过,但此时文件
解决:
# from django.db.models import FieldDoesNotExist, Avg, Max, Min, Count, Sum
from django.db.models import Avg, Max, Min, Count, Sum
from django.core.exceptions import FieldDoesNotExist
报错:ImportError: cannot import name ‘password_reset_confirm’ from ‘django.contrib.auth.views’
解决:
# from django.contrib.auth.views import password_reset_confirm
from django.contrib.auth.views import PasswordResetConfirmView
报错:AttributeError: ‘Settings’ object has no attribute ‘MIDDLEWARE_CLASSES’
注意:此时应进入language.py中修改
解决:
# if settings.LANGUAGES and ‘django.middleware.locale.LocaleMiddleware’ in settings.MIDDLEWARE_CLASSES:
if settings.LANGUAGES and ‘django.middleware.locale.LocaleMiddleware’ in settings.MIDDLEWARE:
报错:ImportError: cannot import name ‘SKIP_ADMIN_LOG’ from ‘import_export.admin’
解决:
# from import_export.admin import DEFAULT_FORMATS, SKIP_ADMIN_LOG, TMP_STORAGE_CLASS
from import_export.admin import DEFAULT_FORMATS,ImportMixin,ImportExportMixinBase
23.
报错:RuntimeError: ‘cryptography’ package is required for sha256_password or caching_sha2_password auth methods
解决:
pip install cryptography
报错:这个错有点离谱了,
是指数据库的用户权限那里出了问题,发现ROOT用的大写,改了之后就好了,当然,密码,之类的也要保证对。
最后一个小失误:
本想创建超级用户的说 python manage.py createsuperuser
结果报错:
让我先迁移一下,好吧,迁移吧:
迁移后,再创建:
好了.
-
运行,报错:AttributeError: ‘Media’ object has no attribute ‘add_css’(当然,也有add_js的)
解决:老规矩,进入文件:
-
运行成功:
报错:ImportError: cannot import name ‘javascript_catalog’ from ‘django.views.i18n’
解决:
第一步:在settings.py加django.config:
第二步:
修改文件(老规矩,进入蓝色路径下的文件修改xadmin/sites.py):
from django.views.i18n import JavaScriptCatalog
return JavaScriptCatalog.as_view(packages=[‘django.conf’, ‘xadmin’])(request)
28.补充:Xadmin汉化一下:
同样在settings.py下面:
LANGUAGE_CODE = ‘zh-Hans’ #设置中文
TIME_ZONE = ‘Asia/Shanghai’ #设置时区
解决:
将所有存在对应的rel的改为remote_field即可。
注意:可能仍存在其他错误需要慢慢摸索一哈!!
【参考博客】
https://blog.csdn.net/weixin_39418139/article/details/100554491
https://www.jianshu.com/p/3a3afda82f72
https://blog.csdn.net/weixin_46002708/article/details/107703034
https://blog.csdn.net/mengyanyuan8023/article/details/90201458