加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
application.py 3.26 KB
一键复制 编辑 原始数据 按行查看 历史
郁骏 提交于 2014-11-05 22:21 . add a js implementation
from flask import Flask, url_for, request, session, render_template, send_from_directory
from werkzeug.exceptions import abort
from werkzeug.utils import redirect
from helper import template_or_json, get_games_from_db, get_game, login_required
"""
同时支持传统方式和Restful式的增删改查,当接收到ajax请求(request.is_xhr)时返回json数据,当接收到普通http请求时调用模板。
Restful API:
- GET /games/ - 显示游戏列表
- GET /games/3/ - 查询id为3的游戏
- POST /games/ - 新增游戏记录
- PUT /games/3/ - 更新id为3的游戏记录
- PATCH /games/3/ - 部分更新
- DELETE /games/3/ - 删除id为3的游戏记录
传统方式:
- GET /games/ - 显示游戏列表
- GET /games/3/ - 查询id为3的游戏
- GET /games/add/ - 显示新增游戏的表单页面
- POST /games/add/ - 新增游戏记录
- GET /games/3/edit/ - 显示id为3的游戏的编辑页面
- POST /games/3/edit/ - 更新id为3的游戏记录
- GET/POST /games/3/delete/ - 删除id为3的游戏
表单页面也可以在网页端用js做
"""
app = Flask(__name__)
# session加密的秘钥,上线了需要重新生成一个
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
@app.route('/')
def index():
# 尝试用js输出页面
return app.send_static_file('index.html')
# return redirect(url_for('show_game_list'))
@app.route('/games/')
@template_or_json('game_list.html')
def show_game_list():
return {'games': get_games_from_db()}
# slug可选
@app.route('/games/<int:game_id>/', methods=['GET'])
@app.route('/games/<int:game_id>/<slug>', methods=['GET'])
@template_or_json('game.html')
def show_game(game_id, slug=None):
game = get_game(game_id)
if not game:
abort(404)
return game
@app.route('/games/<game_id>/edit/', methods=['POST'])
@app.route('/games/<game_id>/', methods=['PUT'])
@login_required
@template_or_json('result.html')
def update_game(game_id):
return {
'success': True,
'error_code': 0,
'message': 'id为%s的游戏记录已经更新,点击<a href=%s>这里</a>查看。' % (game_id, url_for('show_game', game_id=game_id))
}
@app.route('/games/<game_id>/delete/', methods=['GET', 'POST'])
@app.route('/games/<game_id>/', methods=['DELETE'])
@login_required
@template_or_json('result.html')
def delete_game(game_id):
return {
'success': False,
'error_code': 403,
'message': '记录删除失败,没有权限,'
}
@app.route('/login/', methods=['POST'])
@template_or_json('result.html')
def login():
if request.form['username'] == 'admin' and request.form['password'] == '123456':
session['logged_in'] = True
return {
'success': True,
'error_code': 0,
'message': '登陆成功,'
}
return {
'success': False,
'error_code': 403,
'message': '登陆失败'
}
@app.route('/login/', methods=['GET'])
def show_login_form():
return render_template('login.html')
@app.route('/logout/', methods=['GET', 'POST'])
@template_or_json('result.html')
def logout():
session.pop('logged_in', None)
return {
'success': True,
'error_code': 0,
'message': '退出成功,'
}
if __name__ == '__main__':
app.run(debug=True, port=4000)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化