• 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')
    一键三连呀!
  • 相关阅读:
    Makefile 运行
    fortran中//表示什么啊?双斜杠
    如何设置EXCEL打印范围
    Makefile学习_简介
    小白初学Ioc、DI、Castle Windsor依赖注入,大神勿入(不适)
    小白初学ABP框架,着实累啊
    职场初体验
    3.8.1 块作用域
    3.8 控制流程
    3.7.3 文件输入与输出
  • 原文地址:https://www.cnblogs.com/jee-cai/p/14095282.html
Copyright © 2020-2023  润新知