• Ubuntu中部署Django项目的配置与链接MySQL


    Django的简介


    MVT模式的介绍

    创建项目的虚拟环境

    本次使用的是pip安装

    一、更新

    sudo apt update

    二、安装pip

    sudo apt install python3-pip

    三、升级pip(可忽略)

    sudo python3 -m pip install --upgrade pip

    参考链接:https://my.oschina.net/doctorlzr1988/blog/1560215

    四、安装virtualenv、virtualenvwrapper

    sudo pip3 install virtualenv virtualenvwrapper

    五、配置virtualenv

    编辑.bashrc

    vim .bashrc

    末尾添加

    export WORKON_HOME=($HOME)/env #根据自己情况虚拟环境目录的位置修改,我在本目录新建了env做存放
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 source
    /usr/local/bin/virtualenvwrapper.sh

    然后

    source .bashrc

    六、创建虚拟环境

    cd env mkvirtualenv py3dj11 #py3dj11是我用来标识这个环境用途的虚拟环境
    workon py3dj11 #切换到虚拟环境

    七、安装django

    pip3 install django // 后面添加==1.11.11 可以指定版本号,否则为最新

    #这个安装是安装到虚拟目录里面去的,本地python3没有这个模块,所以不切换环境,是没有django的 好了,环境搭建成功!
    因为不同项目可能使用不同版本的django,要使项目所需要的第三方虚拟环境相互分离

    开启一个虚拟环境:
    django-admin startproject testproject_t // testproject_t文件夹名称

    work on // 显示已经安装的虚拟环境
    rmvirtualenv 环境名 // 删除已经安装的虚拟环境
    deactivate // 退出当前环境
    work on 环境名 // 切换环境


    创建完之后用pycharm打开这个文件夹testproject_t:

    此时启用服务器,cd到对应文件夹,用tree可以看文件树:

    python manage.py runserver

    打开本地网址127.0.0.1可以看到链接成功,ctrl+c退出服务器;

    创建模块,其中user是模块名:

    python manage.py startapp user

    会自动创建好其中的内容


    创建完模块之后必须在setting,py链接,否则无法使用:

    还有配置python环境,修改为虚拟环境下的python:

    在setting.py可以设置语言和时区

    在apps.py里可以设置后台管理界面apps的名字改为中文:

    class UserConfig(AppConfig):
    name = 'user'
    verbose_name = '用户管理'

    开始写
    models.py是数据库模型,在里面写要配置的数据库表

    然后在admin.py先导入后注册刚刚创建的表:

    迁移数据库文件:

    python manage.py makemigration // 
    python manage.py migrate // 


    然后创建一个管理员账户:

    python manage.py createsuperuser // 创建超级用户,之后会让你输入名字,邮件密码

    运行服务器:

    python manager.py runserver --host 127.0.0.1 --port 8000 // 绑定ip和端口

    然后打开管理员网址,登录刚刚注册的账户密码,就可以看到数据库

    链接MySQL

    在setting文件修改数据库为mysql,默认数据库为sqlite:
    NAME是数据库名字,USER是登录数据库的账户,之后是密码,HOST和PORT不改则为默认值

    这里要记住安装pymysql和mysqlclient
    在init.py修改

    出现这个错误代码时: django.db.utils.OperationalError: (1045:Access denied for user ‘root’@‘localhost’ (using password: NO)

    这个错误看网上的说法基本都是由于 数据库的 用户名 和 密码 不正确导致的 ,下面是我在Django Setting.py里的设置:

    DATABASES = {
    ‘default’: {
    ‘ENGINE’: ‘django.db.backends.mysql’,
    ‘NAME’: ‘mydatabase’,
    ‘USER’: ‘root’,
    ‘PASSWORD’: ‘123456’,
    ‘HOST’: ‘localhost’,
    ‘PORT’: ‘3306’,
    }}

    这时候进行数据迁移,发现无法链接数据库并且产生了上述的错误代码。

    通过启动 mysql 服务, 发现 用户名和密码都正确并且可以使用。

    由于Mysql 8.0 的部分语法,密码的加密方式发生了改变,在8.0 中的用户密码采用的是cha2 加密方法。

    有可能 是 Django 对这种加密的密码进行编译导致密码设置密码错误。

    ALTER USER ‘root’@‘127.0.0.1’ IDENTIFIED WITH mysql_native_password BY ‘password’;

    在Mysql 8.0 中,利用上述语句可以更新用户的加密方式为过去版本的方式。执行命令如下:

    mysql -u root -p
    use mysql;
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword'; 
    FLUSH PRIVILEGES; 

    即可修改mysql密码

    最后在网页修改的数据库内容可以在本地终端用mysql查看

    可以再pycharm右边的database添加mysql,也可以查看

    如果没有设置表名,则固定为app名_模块名为表名

    要修改表名的话,在models.py进行修改,然后记得数据库迁移即makemigrations和migrate

    可以继续设置修改在后台的展示:
    # 地址表
    class AddressInfo(models.Model):
    add = models.CharField(max_length=50)

    class Meta:
    # 元类
    db_table = 'addinfo'
    # verbose_name = '地址管理' # 这个后面会加s
    verbose_name_plural = '地址管理'

    def __str__(self):
    return self.add

  • 相关阅读:
    Python一些常用模块
    八、线程和进程
    七、Selenium与phantomJS----------动态页面模拟点击、网站模拟登录
    一、scrapy的下载安装---Windows(安装软件太让我伤心了)
    六、BeautifulSoup4------自动登录网站(手动版)
    五、XML与xpath--------------爬取美女图片
    四、正则表达式re模块
    三、Requests库的使用
    二、urllib进阶
    一、爬虫的基本体系和urllib的基本使用
  • 原文地址:https://www.cnblogs.com/chenlinlab/p/11173859.html
Copyright © 2020-2023  润新知