def problems(): # redirect to login page if no cookie username = request.cookies.get('username') if username is None: # FIXME, 注意这个url_for的参数是这个文件中出现的函数名比如 def index 这个index return flask.redirect(flask.url_for('login')) problems_data = problem.load() problems_totality = len(problems_data) if request.method == 'POST': problem_data = request.form.to_dict() problem_id = problems_totality + 1 problem_data['id'] = problem_id print "problem_data : ", problem_data for pro in problems_data: if pro['title'] == problem_data['title']: return "<h1> 这个问题题目已经存在,请重新提问。</h1>" # 应出现提示框 提醒才对 if len(problem_data['title']) <= 2: return "<h1>the title should more than 2 bytes </h1>" else: problem_url = "/problems/" + str(problem_id) problem_data['url'] = problem_url problem.save(problem_data) problems_data = problem.load() # 重新加载一次,这样才能立刻显示出新添加的题目 return render_template('problems_list.html', problems=problems_data)
def problem_subpage(problem_id): # def create_problem_page(problem_id): # FIXME, 这个函数名字取得太烂了,应该叫problem # 另外id不对的时候应该abort(404) # 树: 然而如果叫problem 就会和 problem.py 命名冲突 problems_data = problem.load() if int(problem_id) > len(problems_data): print len(problems_data) return '<h1> 没有这道题 <h1>', 404 problem_data = problems_data[int(problem_id) - 1] # 如果不 problem_id -1,每次post 后,显示的是下一题的页面(感觉可以有妙用 ''' 如果id 并不是自动生成排序,就要这样子判断存取了 for pro in problems_data: if pro['id'] == problem_id: problem_data = pro # break ''' if request.method == 'POST': solution_data = request.form.to_dict() solution_data["problem_id"] = problem_id problem.save_solution_db_file(problem_id, solution_data) solutions_data = problem.load_solution_db_file(problem_id) return render_template('problem_id.html', id=problem_id, problem=problem_data, solutions=solutions_data)
def index(): global user_set, name_set, problem_set problem_set = problem.load() data = { 'users': [ it.name for it in user_set ], 'lists': [ { 'id': problem.id, 'url': spider.get_url(problem.id), 'name': name_set[problem.id], 'status': [ (problem.id in user.ac_list) for user in user_set ] } for problem in problem_set ] } return render_template('index.html', **data)