diff --git a/.gitignore b/.gitignore index b1b2f162..ccac3e7c 100644 --- a/.gitignore +++ b/.gitignore @@ -14,16 +14,17 @@ logs/ /media/ # config -/config.py +/config.conf # PyInstaller /build/ /dist/ -/*.spec +*.spec # local data/ *.sqlite3 /backup/ /pypi/ -WordReview.wiki/ \ No newline at end of file +WordReview.wiki/ +*_ig.* \ No newline at end of file diff --git a/README.md b/README.md index b19ff10e..58336b4d 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,24 @@ - + # Word Review 单词复习 -![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/Benature/WordReview) ![GitHub stars](https://img.shields.io/github/stars/Benature/WordReview?style=flat) ![GitHub stars](https://img.shields.io/github/forks/Benature/WordReview?style=flat) ![GitHub issues](https://img.shields.io/github/issues/Benature/WordReview) ![GitHub closed issues](https://img.shields.io/github/issues-closed/Benature/WordReview) +![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/Benature/WordReview) ![GitHub](https://img.shields.io/github/license/Benature/WordReview) Django + MySQL + Pug + JS - Python 3.7+ - Django 3 -- Mysql 8 +- Mysql 8 / sqlite 3 -简单录了一个 DEMO 视频,上传到了[B站](https://www.bilibili.com/video/av90579311/),欢迎康康。 +二月的时候简单录了一个 DEMO 视频,上传到了[微信公众号](https://mp.weixin.qq.com/s/3VjiflLdzKv0sjxm1noxDw)和[B站](https://www.bilibili.com/video/av90579311/)(BV 号:**BV1q7411w7r9**),欢迎康康。 还有一个[在线试玩](https://benature.github.io/WordReview/),可以先感受一下。 +>在线体验的版本对应`master`分支,现在默认显示的是`ben`分支(开发分支) 如果觉得还不错的话,不如给个 stars🌟呗( ̄▽ ̄)~* @@ -155,7 +156,7 @@ tain ### List 的记忆率 - 蓝条:历史记忆率,对 List 内单词的总记忆率取平均 -- 绿条:上轮记忆率,按 List 内单词的 **最新两次** 记忆情况就散平均记忆率 +- 绿条:上轮记忆率,按 List 内单词的 **最新两次** 记忆情况计算平均记忆率 ### 单词的`flag` @@ -170,6 +171,7 @@ tain ### 更新日志 - 2020.04 + - update: 配置文件更换为`.conf`文件(以支持默认参数) @04-18 - feature: 命令行启动后自动打开浏览器 ([Issue#4](https://github.com/Benature/WordReview/issues/4)) @04-16 - feature: 新增[在线预览](https://benature.github.io/WordReview/) @04-16 - feature: 对的后端爬虫 API ([Issue#2](https://github.com/Benature/WordReview/issues/2)) @04-15 diff --git a/WordReview/__init__.py b/WordReview/__init__.py index 6147e734..bcd18a61 100644 --- a/WordReview/__init__.py +++ b/WordReview/__init__.py @@ -1,5 +1,5 @@ -import config -if config.database_type == 'mysql': +from config import config +if config.get('custom', 'db_type') == 'mysql': import pymysql pymysql.install_as_MySQLdb() # import pymysql diff --git a/WordReview/settings.py b/WordReview/settings.py index 6db94886..fcfee67b 100644 --- a/WordReview/settings.py +++ b/WordReview/settings.py @@ -12,7 +12,7 @@ import os import sys -import config +from config import config # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) @@ -89,22 +89,28 @@ # Database # https://docs.djangoproject.com/en/3.0/ref/settings/#databases -DATABASES = config.DATABASES -# { -# # 'default': { -# # 'ENGINE': 'django.db.backends.sqlite3', -# # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), -# # } -# 'default': { -# 'ENGINE': 'django.db.backends.mysql', -# 'NAME': 'tg_word_db', # database name -# 'USER': 'tg_word_user', # user name -# 'PASSWORD': 'tg_word2020', # user pwd -# 'HOST': 'localhost', # '116.62.12.178', -# 'PORT': '', -# } -# } - +db_type = config.get('custom', 'db_type') +if db_type == 'mysql': + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', + 'NAME': config.get('mysql', 'mysql_name', fallback='word_db'), + 'USER': config.get('mysql', 'mysql_user', fallback='word_user'), + 'PASSWORD': config.get('mysql', 'mysql_password', fallback='word2020'), + 'HOST': config.get('mysql', 'mysql_host', fallback='localhost'), + 'PORT': config.get('mysql', 'mysql_port', fallback=''), + 'OPTIONS': {'charset': 'utf8mb4'}, + } + } +elif db_type == 'sqlite': + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + } + } +else: + raise ValueError(f'请选择正确的数据库:`mysql`、`sqlite`,而非{db_type}') # Password validation # https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators diff --git a/config.py b/config.py new file mode 100644 index 00000000..e991b13b --- /dev/null +++ b/config.py @@ -0,0 +1,11 @@ +__all__ = ['config'] + +import configparser + +default_dict = { + 'db_type': 'sqlite', + 'auto_open_browser': 'yes', +} + +config = configparser.ConfigParser(default_dict) +config.read('config.conf') diff --git a/config_sample.conf b/config_sample.conf new file mode 100644 index 00000000..ef2e427e --- /dev/null +++ b/config_sample.conf @@ -0,0 +1,20 @@ +# ====================================================== +# 用户自定义配置区 +# ====================================================== +[custom] +# 是否自动打开浏览器 +auto_open_browser = yes + +# 使用数据库类型:`sqlite`(默认)、`mysql` +db_type = sqlite + +# ====================================================== +# 数据库使用配置 +# (除非你知道你在干嘛,否则请勿修改下面代码) +# ====================================================== +[mysql] +mysql_name = 'word_db' +mysql_user = 'word_user' +mysql_password = 'word2020' +mysql_host = 'localhost' +mysql_port = '' \ No newline at end of file diff --git a/config_sample.py b/config_sample.py deleted file mode 100644 index ff857b4d..00000000 --- a/config_sample.py +++ /dev/null @@ -1,38 +0,0 @@ -import os - -# ====================================================== -# 用户自定义配置区 -# ====================================================== - -# 使用数据库类型:`mysql`、`sqlite` -database_type = 'sqlite' - -auto_open_browser = True - -# ====================================================== -# 数据库使用配置 -# (除非你知道你在干嘛,否则请勿修改下面代码) -# ====================================================== - -if database_type == 'mysql': - DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.mysql', - 'NAME': 'tg_word_db', - 'USER': 'tg_word_user', - 'PASSWORD': 'tg_word2020', - 'HOST': 'localhost', - 'PORT': '', - 'OPTIONS': {'charset': 'utf8mb4'}, - } - } -elif database_type == 'sqlite': - BASE_DIR = os.path.dirname(os.path.abspath(__file__)) - DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), - } - } -else: - raise ValueError(f'请选择正确的数据库:`mysql`、`sqlite`,而非{database_type}') diff --git a/doc/install.md b/doc/install.md index 96bebda3..34868d0c 100644 --- a/doc/install.md +++ b/doc/install.md @@ -85,14 +85,14 @@ pip: command not found `config.py`文件下,找到下面这个变量,定义为`sqlite`。(默认就是这个,一般不用动了) -```python +```conf # 使用数据库类型:`mysql`、`sqlite` -database_type = 'sqlite' +db_type = sqlite ``` ->不过我是用 MySQL 的,如果想直接操作数据库的话,主要靠你自己百度的,你来问我我也是去百度的。 ->当然,只要你操作正常,一般没必要去直接操作数据库的。 ->再其实,就算要直接操作数据库,也可以借助 GUI 工具,工具有哪些可以[自己找找看](https://www.bing.com/search?q=sqlite+GUI)。 + +>如果需要直接操作数据库,可以借助 GUI 工具,工具有哪些可以[在这里找找看](https://www.bing.com/search?q=sqlite+GUI)。 ## 3.2. 选择二:MySQL @@ -182,9 +182,9 @@ flush privileges; -- 刷新系统权限表 `config.py`文件下,找到下面这个变量,定义为`mysql`。(默认就是这个,一般不用动了) -```python +```conf # 使用数据库类型:`mysql`、`sqlite` -database_type = 'mysql' +db_type = mysql ``` diff --git a/manage.py b/manage.py index 0f9ce54b..bade5d4f 100755 --- a/manage.py +++ b/manage.py @@ -2,7 +2,7 @@ """Django's command-line utility for administrative tasks.""" import os import sys -from config import auto_open_browser +from config import config BASE_DIR = os.path.abspath(__file__) sys.path.append(os.path.join(BASE_DIR, "pypi")) @@ -74,7 +74,7 @@ def main(): "forget to activate a virtual environment?" ) from exc - if Is_child_processing() and auto_open_browser: + if Is_child_processing() and config.getboolean('custom', 'auto_open_browser'): import threading t = threading.Thread( target=enable_browser_with_delay, args=(sys.argv, 1))