NaHan is a tiny forum written by Python flask and bootstrap. Its goal is to learn flask and web development in practice.
Topic page:
Admin page:
Major features:
- Whole user manage system, containing registration, login, password change, retrieve;
- Topic management system, login users can create topics, append topics, have comments on topics.
- Markdown support in topic, appendix of topic and comment.
- Can use
@someone
to remind other user anywhere. The user which be is reminded will receive notify. - A convenient administrator system, super user can block or activate users, topics, nodes and comments.
- A simple keyword search engine, one can search some specific topics.
-
Firstly, make sure all the relevant modules installed.
You'd better use virtualenv to create a isolated python environments, and then use pip to install all the requirements.
pip install -r requirements.txt
-
Do some custom configure in
config.py
, have a glance as followers:# flask config SECRET_KEY = os.environ.get('SECRET_KEY') or '!@#$%^&*12345678' # Config about senting email. MAIL_SERVER = 'smtp.qq.com' MAIL_PORT = 465 MAIL_USE_SSL = True MAIL_USERNAME = os.environ.get('MAIL_USERNAME') MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD') FORUM_MAIL_SUBJECT_PREFIX = 'NaHan' FORUM_MAIL_SENDER = 'Nahan <[email protected]>' # Optional, setting about translation. BABEL_DEFAULT_LOCALE = 'zh' BABEL_DEFAULT_TIMEZONE = 'CST' # Some config about forum, containing pagination page size, saving position and limit of avatar. PER_PAGE = 10 UPLOAD_FOLDER = os.path.join(basedir, 'nahan/static/upload') ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg']) MAX_CONTENT_LENGTH = 512 * 1024 # Database setting. SQLALCHEMY_DATABASE_URI = (os.environ.get('DEV_DATABASE_URL') or 'mysql://root:******@localhost/nahan')
-
Start corresponding database service.
In MacOS, start mysql using the following command:
mysql.server start
-
Go to the project's directory, run
python manage.py runserver
.
For more about how to run a flask project, you need to have much knowledge about flask, docs can be found here.