Django开发中常用命令以及常见问题汇总

目录

一、Python虚拟环境

二、Django使用mysql

三、Django改为中文以及时区

常见问题

1、django跨域的时候报错

2、cannot import name 'password_reset_confirm'

3、django.contrib.auth.views import login

4、render() got an unexpected keyword argument 'renderer'

5、django.db.utils.InternalError

6、关联关系ForeignKey引发的错误

7、模块包名称合并修改引发的错误

8、Xadmin 报错 'MIDDLEWARE_CLASSES'

9、xadmin报错 'QUERY_TERMS'


一、Python虚拟环境

安装python3,升级pip3

sudo pip3 install --upgrade pip

安装 virtualenv

sudo pip install virtualenv

安装 virtualenvwrapper, Virtaulenvwrapper是virtualenv的扩展包,可以更方便地新增,删除,复制,切换虚拟环境。

sudo pip install virtualenvwrapper

接下来创建一个文件夹,用来存放所有的虚拟环境 

mkdir ~/.virtualenvs

在~/.bashrc下添加环境变量

export WORKON_HOME=~/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

然后切换到 .virtualenvs目录下

cd .virtualenvs/

创建一个或者多个虚拟环境 env1

mkvirtualenv env1

列出虚拟环境

lsvirtualenv -b

切换虚拟环境

workon env1

查询环境安装了哪些包

lssitepackages

退出虚拟环境

deactivate

删除虚拟环境

rmvirtualenv env1

二、Django使用mysql

在settings.py中修改DATABASES

DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.mysql', #数据库引擎
         'NAME': 'test',                       #数据库名
         'USER': 'root',                       #用户名
         'PASSWORD': 'root',                   #密码
         'HOST': '',                           #数据库主机,默认为localhost
         'PORT': '',                           #数据库端口,MySQL默认为3306
         'OPTIONS': {
             'autocommit': True,
         },
     }
 }

在__init__.py中添加 

import pymysql
pymysql.install_as_MySQLdb()

三、Django改为中文以及时区

在settings.py中修改以下代码

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

常见问题

1、django跨域的时候报错

错误提示:

(corsheaders.E013) Origin '127.0.0.1:8080' in CORS_ORIGIN_WHITELIST is missing scheme or netloc
    HINT: Add a scheme (e.g. https://) or netloc (e.g. example.com).

解决方法:

报这个错误意思是自己跨域的时候地址写错了,地址需要加上http://

'http://127.0.0.1:8080',
'http://localhost:8080',

2、cannot import name 'password_reset_confirm'

错误提示:

cannot import name 'password_reset_confirm'

解决方法:

from django.contrib.auth.views import PasswordResetForm

3、django.contrib.auth.views import login

错误提示:

ImportError: cannot import name 'login' from 'django.contrib.auth.views'

解决方法:

from django.contrib.auth import login

4、render() got an unexpected keyword argument 'renderer'

错误提示:

render() got an unexpected keyword argument 'renderer'

解决方法:

找到这一行,把“renderer = self.form.renderer”注释掉

5、django.db.utils.InternalError

错误提示:

django.db.utils.InternalError: (1060, "Duplicate column name 'cooperation_period'")

解决方法:

错误的主要原因是数据库中已经含有相应的字段了,但是在你makemigrations的时候还记录了需要增加这个字段(主要是你可能删除过migrations这个文件夹里面的内容)

将你存在的字段名,在migrations文件夹中注释掉,再migrate

6、关联关系ForeignKey引发的错误

错误提示:

提示缺少参数on_delete

解决方法:

凡是出现关联关系字段的地方全部加上 on_delete=models.CASCADE , 如下图所示:

7、模块包名称合并修改引发的错误

错误提示:

ModuleNotFoundError: No module named 'django.core.urlresolvers' 

解决方法:

from django.core.urlresolvers import NoReverseMatch, reverse 
# 修改为:
from django.urls import NoReverseMatch, reverse

8、Xadmin 报错 'MIDDLEWARE_CLASSES'

错误提示:

AttributeError: 'Settings' object has no attribute 'MIDDLEWARE_CLASSES'

解决方法:

# 将xadminpluginslanguage.py 中的

if settings.LANGUAGES and 'django.middleware.locale.LocaleMiddleware' in settings.MIDDLEWARE_CLASSES:

# 修改为:

if settings.LANGUAGES and 'django.middleware.locale.LocaleMiddleware' in settings.MIDDLEWARE:

# 最后运行:
python manage.py makemigrations # 创建迁移数据文件

# 再运行:
python manage.py migrate # 迁移数据库

9、xadmin报错 'QUERY_TERMS'

错误提示:

ImportError: cannot import name 'QUERY_TERMS' from 'django.db.models.sql.query'

解决方法:

# django2.1.1版本将xadminpluginsfilters.py文件中的

from django.db.models.sql.query import LOOKUP_SEP, QUERY_TERMS

# 修改为

from django.db.models.sql.query import LOOKUP_SEP, Query



# 在Django2.0版本中把

from django.db.models.sql.query import LOOKUP_SEP, QUERY_TERMS

# 修改为:

from django.db.models.sql.query import LOOKUP_SEP

from django.db.models.sql.constants import QUERY_TERMS

10、django设置msyql引擎出错

错误提示:

django.db.utils.OperationalError: (1193, "Unknown system variable 'storage_engine'")

解决方法:

# django连接数据库时,配置

"OPTIONS":{"init_command":"SET default_storage_engine=INNODB;"}

11、django提示缺失mysqlclient

错误提示:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

解决方法:

# 找到site-packages/django/db/backends/mysql/base.py,注释掉下面的两行代码

if version < (1, 3, 13):
    raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)

12、AttributeError: 'str' object has no attribute 'decode'

错误提示:

AttributeError: 'str' object has no attribute 'decode'

解决办法:

# 找到/site-packages/django/db/backends/mysql/operations.py
query = query.decode(errors='replace')
# 修改为
​​​​​​​query = query.encode(errors='replace')
一键三连呀!
原文地址:https://www.cnblogs.com/jee-cai/p/14095282.html