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'

解決方法:

# 將xadmin\plugins\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:

# 最後運行:
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版本將xadmin\plugins\filters.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')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章