Bob's Blog

Web开发、测试框架、自动化平台、APP开发、机器学习等

返回上页首页

用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中,在后续文章提及。

下一篇:  用Django做一个简单的记账网站(二)建立初始页面
上一篇:  Python中的装饰器及其用法

共有0条评论

添加评论

暂无评论