用Django做一个简单的记账网站(一)环境搭建
之前做过几个网站,一直没记录过程。这次因为一直在使用的网易有钱记账app停运了,没有找到合适的替代app,于是自己打算先做一个简单的记账网站并记录整个过程。后续开放数据给自己的app,方便自己使用。
网易有钱记账app的数据可以导出,于是自己会基于这些数据的内容分类来做,会比较像这个app,符合自己这几年的习惯。
为了快,会直接用Django的MVT模式(model-template-view)。如果对前后端分离感兴趣一点,可以看看我之前写的django restframework和vue的系列文章,可以从这一篇看起: Django restframework加Vue打造前后端分离的网站(一)环境准备
环境为:python 3.8,django 3,bootstrap 4,echarts 5,mysql, uwsgi,nginx.
先安装django
pip install django
或指定任意版本
pip install django==3.1.4
新建项目,新建应用
django-admin startproject rdie # record daily income expense
cd rdie
python manage.py startapp accounting
在mysql中新建一个数据库
mysql -uroot -p # your account and password
create database accouting;
exit;
安装pymysql以支持mysql的操作
pip install pymysql
并在rdie/__init__.py中加上:
import pymysql
pymysql.version_info = (1, 4, 0, "final", 0)
pymysql.install_as_MySQLdb()
# (1, 4, 0, "final", 0)是为了快速解决这个报错:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.0 or newer is required; you have 0.10.1.
现在需要修改rdie/settings.py:
ALLOWED_HOSTS = ['*'] # 允许其他来源的访问
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'accounting' # 新加的app
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'accouting',
'USER': 'user name', # 改成自己的db账户名
'PASSWORD': 'user pw', # 改成自己的db账户密码
'HOST': '127.0.0.1',
'PORT': 3306,
'OPTIONS': {
'autocommit': True,
},
}
}
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = False
执行migrate操作
python 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 auth.0010_alter_group_name_max_length... OK
# Applying auth.0011_update_proxy_permissions... OK
# Applying auth.0012_alter_user_first_name_max_length... OK
# Applying sessions.0001_initial... OK
此时可以检查一下,运行
python manage.py runserver
打开http://127.0.0.1:8000/可以看见django字样,打开http://127.0.0.1:8000/admin能看到管理界面,那么目前环境正常。
但是admin登录不进去,因为自己还没有创建用户。
创建一个管理员账号,输入下面命令按提示操作即可
python manage.py createsuperuser
这时便能用新建的账号登录admin管理后台了。
接下来再装uwsgi,不过uwsgi是在后续部署时会用到,现在装上即可。
pip install uwsgi
关于bootstrap和echarts等,会体现在templates里的html中,在后续文章提及。
上一篇:
Python中的装饰器及其用法