def post_view(): # 添加文章 if request.method == 'POST': post = Post.create() return generate_res(data={'id': post.id}) elif request.method == 'PUT': form = PostValidate().validate_api() Post.update_by_id(form.id.data, form.data) return generate_res() elif request.method == 'DELETE': Post.delete_by_id(request.get_json().get('id')) return generate_res() post = Post.query.get_or_404(request.args.get('id')) return generate_res(data=PostView(post))
def user_info_view(): uid = request.headers.get('identify') user = User.query.get_or_404(uid) if request.method == 'PUT': form = UserValidate().validate_api() if form.email.data and form.email.data != user.email: user.email_is_validate = False user.email = form.email.data send_email(to=form.email, subject='账户邮件修改确认', content=url_for('admin.auth_email_view', token=user.generate_token())) user.update(form.data) return generate_res() return generate_res(data=UserInfoView(user))
def posts(): data = { 'current_page': '1', 'content': [{ "id": 1, "title": 'article title', "article": ' 进程: 进程是一个实体。每个进程都有自己的地址空间(CPU分配) 是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程: 线程是进程中的一个实体 一个进程内部可能包含了很多顺序执行流,每个顺序执行流就是一个线程 应用场景: 多进程:cpu密集型 多线程:io密集型' }, { "id": 2, "title": 'article title', "article": ' 进程: 进程是一个实体。每个进程都有自己的地址空间(CPU分配) 是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程: 线程是进程中的一个实体 一个进程内部可能包含了很多顺序执行流,每个顺序执行流就是一个线程 应用场景: 多进程:cpu密集型 多线程:io密集型' }, { "id": 3, "title": 'article title', "article": ' 进程: 进程是一个实体。每个进程都有自己的地址空间(CPU分配) 是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程: 线程是进程中的一个实体 一个进程内部可能包含了很多顺序执行流,每个顺序执行流就是一个线程 应用场景: 多进程:cpu密集型 多线程:io密集型' }, { "id": 4, "title": 'article title', "article": ' 进程: 进程是一个实体。每个进程都有自己的地址空间(CPU分配) 是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程: 线程是进程中的一个实体 一个进程内部可能包含了很多顺序执行流,每个顺序执行流就是一个线程 应用场景: 多进程:cpu密集型 多线程:io密集型' }] } return generate_res("success", data=data)
def register_view(): form = RegisterValidate().validate_api() user = User.create(form.data) if form.email: send_email(to=form.email, subject='账号注册', content=url_for('admin.auth_email_view', token=user.generate_token())) return generate_res(data={'id': user.id})
def login_view(): form = LoginValidate().validate_api() user = User.query.filter_by(username=form.username.data).first_or_404() if not user.check_password(form.password.data): raise AuthFailed() user.update(is_active=True) return generate_res(data={ 'id': user.id, 'token': user.generate_token(), })
def tags_view(): if request.method == 'PUT': form = TagValidate().validate_api() tag = Tag.query.get_or_404(form.id.data) # 如果修改了标签名,且修改后的标签名已存在 if tag.name != form.name.data and Tag.query.filter_by(name=form.name.data).first(): raise RepeatException(msg='标签名已存在') tag.update(form.data) return generate_res() elif request.method == 'DELETE': Tag.delete_by_id(request.get_json().get('id')) return generate_res() elif request.method == 'POST': form = TagValidate().validate_api() if Tag.query.filter_by(name=form.name.data).first(): raise RepeatException('标签已存在') Tag.create(form.data, count=1) return generate_res() query = QueryView() pagination = Tag.search(**query.search_query) return generate_res(data=TagsView(pagination.items, query.page))
def tag_view(): return generate_res(data=[ { "id": 1, "name": "ubuntu", "count": 5, }, { "id": 2, "name": "linux", "count": 10 }, { "id": 3, "name": "python", "count": 3 }, { "id": 4, "name": "java", "count": 3 }, { "id": 5, "name": "javaScript", "count": 3 }, { "id": 6, "name": "学习记录", "count": 3 }, { "id": 7, "name": "docker", "count": 3 }, { "id": 8, "name": "chrome", "count": 3 }, ])
def all_tags_view(): tags = [tag.name for tag in Tag.query.all()] return generate_res(data=tags)
def auth_view(): return generate_res()
def logout_view(): uid = request.headers.get('identify') User.update_by_id(uid, is_active=False) return generate_res()
def auth_email_view(token): User.confirm_email_token(token) return generate_res()
def post_view(): return generate_res( data={ "id": 1, "title": "并发编程", "article": { "blocks": [{ "key": "e3ouk", "text": "import requests\nimport threading\ndef test2():\n def request(url):\n t = threading.Thread(target=lambda _: requests.get(_), args=(url,))\n t.start()\n return t\n print('开始请求url:', URL1)\n request(URL1) \n print('开始请求url:', URL2) # 非阻塞\n request(URL2)\ntest2()\n", "type": "code-block", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": { "nodeAttributes": {}, "syntax": "python" } }, { "key": "duat5", "text": "", "type": "unstyled", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "2ugee", "text": "import requests\nimport threading\ndef test2():\n def request(url):\n t = threading.Thread(target=lambda _: requests.get(_), args=(url,))\n t.start()\n return t\n print('开始请求url:', URL1)\n request(URL1) \n print('开始请求url:', URL2) # 非阻塞\n request(URL2)\ntest2()", "type": "code-block", "depth": 0, "inlineStyleRanges": [{ "offset": 0, "length": 6, "style": "COLOR-8959A8" }, { "offset": 16, "length": 6, "style": "COLOR-8959A8" }, { "offset": 33, "length": 3, "style": "COLOR-8959A8" }, { "offset": 50, "length": 3, "style": "COLOR-8959A8" }, { "offset": 104, "length": 6, "style": "COLOR-8959A8" }, { "offset": 170, "length": 6, "style": "COLOR-8959A8" }, { "offset": 33, "length": 12, "style": "COLOR-4271AE" }, { "offset": 50, "length": 17, "style": "COLOR-4271AE" }, { "offset": 37, "length": 5, "style": "COLOR-3E999F" }, { "offset": 54, "length": 7, "style": "COLOR-3E999F" }, { "offset": 42, "length": 2, "style": "COLOR-F5871F" }, { "offset": 61, "length": 5, "style": "COLOR-F5871F" }, { "offset": 189, "length": 10, "style": "COLOR-718C00" }, { "offset": 260, "length": 10, "style": "COLOR-718C00" }, { "offset": 282, "length": 5, "style": "COLOR-8E908C" }], "entityRanges": [], "data": { "nodeAttributes": {} } }, { "key": "5h05h", "text": "", "type": "unstyled", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "4cj8k", "text": "🤣💚💚👏💝💓😅👍😊", "type": "unstyled", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "1atnc", "text": "", "type": "unstyled", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "eupff", "text": "", "type": "unstyled", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "7g8qg", "text": "", "type": "unstyled", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "f6qpk", "text": "tes", "type": "table-cell", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": { "tableKey": "fpq5c", "colIndex": 0, "rowIndex": 0, "colSpan": 1, "rowSpan": 1 } }, { "key": "bqnv", "text": "test", "type": "table-cell", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": { "tableKey": "fpq5c", "colIndex": 1, "rowIndex": 0, "colSpan": 1, "rowSpan": 1 } }, { "key": "5766n", "text": "teste", "type": "table-cell", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": { "tableKey": "fpq5c", "colIndex": 2, "rowIndex": 0, "colSpan": 1, "rowSpan": 1 } }, { "key": "6v19u", "text": "teste", "type": "table-cell", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": { "tableKey": "fpq5c", "colIndex": 0, "rowIndex": 1, "colSpan": 1, "rowSpan": 1 } }, { "key": "aru41", "text": "dsafdf", "type": "table-cell", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": { "tableKey": "fpq5c", "colIndex": 1, "rowIndex": 1, "colSpan": 1, "rowSpan": 1 } }, { "key": "ce40k", "text": "teste", "type": "table-cell", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": { "tableKey": "fpq5c", "colIndex": 2, "rowIndex": 1, "colSpan": 1, "rowSpan": 1 } }, { "key": "ap7s5", "text": "adsfsdf", "type": "table-cell", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": { "tableKey": "fpq5c", "colIndex": 0, "rowIndex": 2, "colSpan": 1, "rowSpan": 1 } }, { "key": "8j8l1", "text": "tesate", "type": "table-cell", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": { "tableKey": "fpq5c", "colIndex": 1, "rowIndex": 2, "colSpan": 1, "rowSpan": 1 } }, { "key": "epkdv", "text": "teat", "type": "table-cell", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": { "tableKey": "fpq5c", "colIndex": 2, "rowIndex": 2, "colSpan": 1, "rowSpan": 1 } }, { "key": "3cvv2", "text": "", "type": "unstyled", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }], "entityMap": {} } })
def user_view(): return generate_res( data={ "about": { "blocks": [{ "key": "4jc4v", "text": "关于本人", "type": "header-two", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": { "id": "关于本人" } }, { "key": "cem1n", "text": "it小学生", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [{ "offset": 0, "length": 5, "style": "STRIKETHROUGH" }], "entityRanges": [], "data": {} }, { "key": "2su85", "text": "愤青,", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [{ "offset": 0, "length": 2, "style": "STRIKETHROUGH" }], "entityRanges": [], "data": {} }, { "key": "6mrkb", "text": "没经历过社会的摩擦", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [{ "offset": 0, "length": 9, "style": "STRIKETHROUGH" }], "entityRanges": [], "data": {} }, { "key": "bss9f", "text": "十万个为什么", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "uph", "text": "热爱技术", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "449md", "text": "大学本科在读", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "1j7hc", "text": "富强民主文明和谐", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "dpgch", "text": "自由平等公正法制", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "507m9", "text": "爱国敬业诚信友善", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "d26r", "text": "富強 民主 文明 和諧", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "6vjtc", "text": "自繇 平等 公正 法治 ", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "as92h", "text": "愛國 敬業 誠信 友善", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "aa6so", "text": "Prosperity Democracy Civility Harmony", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "146ck", "text": "Freedom Equality Justice RuleOfLaw ", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "1u1j7", "text": "Patriotism Dedication Integrity Friendship", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "b8dlb", "text": "부강 민주 문명 조화", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "6vve7", "text": "자유 평등 공정, 법치", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "d889o", "text": "애국 직업정신 성실과신용 우호", "type": "unordered-list-item", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": {} }, { "key": "3obth", "text": "正在拜读:", "type": "unstyled", "depth": 0, "inlineStyleRanges": [], "entityRanges": [], "data": { "nodeAttributes": {} } }, { "key": "50v57", "text": "他改变了中国(手动狗头)", "type": "unstyled", "depth": 0, "inlineStyleRanges": [], "entityRanges": [{ "offset": 0, "length": 6, "key": 0 }], "data": { "nodeAttributes": {} } }], "entityMap": { "0": { "type": "LINK", "mutability": "MUTABLE", "data": { "href": "https://www.baidu.com/s?wd=%E4%BB%96%E6%94%B9%E5%8F%98%E4%BA%86%E4%B8%AD%E5%9B%BD&rsv_spt=1&rsv_iqid=0xdb5b2c6800019604&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=ib&rsv_sug3=18&rsv_sug1=11&rsv_sug7=100", "target": None, "nodeAttributes": {} } } } } })
def posts_view(): query = QueryView() pagination = Post.search(**query.search_query) return generate_res(data=PostsView(pagination.items, query.page))