环境和工具
- python3
- django
- mysql
- PyCharm
$ python3 --version
Python 3.7.0
$ django-admin --version
2.2
python3和django安装
参考 http://www.runoob.com/django/django-install.html
django初始化项目
使用django-admin来初始化一个项目
$ django-admin startproject mydjango
$ cd mydjango
$ tree
.
├── manage.py #与该 Django 项目进行交互的命令行工具
└── mydjango #项目主容器
├── __init__.py #告诉 Python 该目录是一个 Python 包
├── settings.py #项目的设置文件
├── urls.py #路由文件
└── wsgi.py #WSGI 兼容的Web服务器配置
启动web服务
$ python3 manage.py runserver localhost:8000
November 07, 2018 - 13:02:55
Django version 2.2, using settings 'mydjango.settings'
Starting development server at http://localhost:8000/
Quit the server with CONTROL-C.
浏览器访问 http://localhost:8000
访问 http://localhost:8000/admin
但这个时候没有数据库配置和用户数据,所以无法登陆
初始化后台用户
这个时候先用PyCharm打开项目
修改配置
修改项目的数据库连接
打开/mydjango/mydjango/settings.py
文件,默认数据库连接为sqlite3
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
修改为mysql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #连接引擎
'NAME': 'mydjango', #数据库名称
'USER': 'root', #用户名
'PASSWORD': 'root', #密码
'HOST': '127.0.0.1', #地址
'PORT': '3306', #端口
}
}
修改语言
#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-Hans'
修改时区
#TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
迁移数据库配置变化到mysql
$ python3 manage.py migrate
.
...
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
发现报错,原因是django连接数据库,提示找不到MySQLdb模块,是否安装了mysqlclient(mysql客户端工具)? 需要项目引入python的mysql客户端模块:pymysql
如果pymysql未在开发环境安装,需要安装:
$ pip3 install pymysql
安装完成后,在/mydjango/mydjango/__init__.py
文件中,引入mysql客户端模块:
import pymysql
pymysql.install_as_MySQLdb()
继续检测数据库配置变化,并迁移变化到数据库:
$ python3 manage.py migrate
.
...
pymysql.err.InternalError: (1049, "Unknown database 'mydjango'")
提示找不到数据库mydjango,在mysql中新建数据库mydjango
CREATE DATABASE `myjdango`
DEFAULT CHARACTER SET = `utf8mb4`;
继续检测变化,并迁移变化到数据库
$ python3 manage.py migrate
.
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying sessions.0001_initial... OK
执行成功,查看数据库,已自动创建相关表:
创建后台超级用户
$ python3 manage.py createsuperuser
.
用户名 (leave blank to use 'xxx'): admin
电子邮件地址: admin@test.com
Password: admin #实际不显示
Password (again): admin #实际不显示
密码跟 电子邮件地址 太相似了。
密码长度太短。密码必须包含至少 8 个字符。
这个密码太常见了。
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
查看auth_user
表,发现多了一条admin的数据
初始化后台用户到这里已经完成了。
登录到后台
使用PyCharm启动web服务
控制台启动日志:
pydev debugger: process 89608 is connecting
Connected to pydev debugger (build 182.4505.26)
pydev debugger: process 89609 is connecting
Performing system checks...
System check identified no issues (0 silenced).
November 07, 2018 - 22:54:34
Django version 2.1.3, using settings 'mydjango.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
浏览器访问 http://127.0.0.1:8000/admin
跳出登录页面后,使用前面创建的 admin用户登录
登录成功后,跳转到站点管理页面:
这里是django集成好的后台管理页面,可以对用户、组、权限进行管理
项目地址
https://gitee.com/yimingkeji/DjangoAdmin