编写 TODO 应用【part002】

设置配置

配置的话,我们全放在 config 目录下,并且按环境划分,因为只使用到开发环境,所以就只设置了开发环境的:

config/init.py

  1. # coding: UTF-8
  2. import os
  3. def load_config(mode=os.environ.get('MODE')):
  4. """Load config."""
  5. try:
  6. if mode == 'PRODUCTION':
  7. from .production import ProductionConfig
  8. return ProductionConfig
  9. elif mode == 'TESTING':
  10. from .testing import TestingConfig
  11. return TestingConfig
  12. else:
  13. from .development import DevelopmentConfig
  14. return DevelopmentConfig
  15. except ImportError:
  16. from .default import Config
  17. return Config
  18. config/development.py
  19. # coding: utf-8
  20. import os
  21. class DevelopmentConfig(object):
  22. """Base config class."""
  23. # Flask app config
  24. DEBUG = False
  25. TESTING = False
  26. SECRET_KEY = "sample_key"
  27. # Root path of project
  28. PROJECT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
  29. # Site domain
  30. SITE_TITLE = "twtf"
  31. SITE_DOMAIN = "http://localhost:8080"
  32. # MongoEngine config
  33. MONGODB_SETTINGS = {
  34. 'db': 'the_way_to_flask',
  35. 'host': '192.168.59.103',
  36. 'port': 27017
  37. }
  38. ## 配置运行脚本
  39. 到此,我们的应用代码算是写完了,然后就是运行服务器了,还是使用 Flask-Script,所以我们需要配置 manage.py,内容为;
  40. manage.py
  41. #!/usr/bin/env python
  42. # encoding: utf-8
  43. from flask_script import Manager
  44. from flask_script.commands import ShowUrls
  45. from application import create_app
  46. manager = Manager(create_app)
  47. manager.add_option('-c', '--config', dest='mode', required=False)
  48. manager.add_command("showurls", ShowUrls())
  49. if __name__ == "__main__":
  50. manager.run()

运行服务器

  1. pyhton manage.py -c development runserver

当你看到以下语句的时候说明你的服务器运行成功了:

  1. * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

添加用户

因为现在数据库中是没有用户的,所以我们需要手动添加一个用户先,在管理后台可以添加:

  1. http://localhost:5000/admin/user/

编写 TODO 应用【part002】 - 图1
编写 TODO 应用【part002】 - 图2

测试功能:

登录:

  1. POST /auth/login HTTP/1.1
  2. Host: localhost:5000
  3. {"username": "zhangsan",
  4. "password": "password"}

响应应该是:

  1. {
  2. "email": "zhangsan@gmail.com",
  3. "name": "zhangsan",
  4. "role": "ADMIN"
  5. }