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

Django的简介python


MVT模式的介绍

建立项目的虚拟环境mysql

本次使用的是pip安装sql

1、更新数据库

sudo apt update

2、安装pipdjango

sudo apt install python3-pip

3、升级pip(可忽略)vim

sudo python3 -m pip install --upgrade pip

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

4、安装virtualenv、virtualenvwrapper服务器

sudo pip3 install virtualenv virtualenvwrapper

5、配置virtualenvapp

编辑.bashrc加密

vim .bashrc

末尾添加

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

而后

source .bashrc

6、建立虚拟环境

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

7、安装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

相关文章
相关标签/搜索