python学习

This commit is contained in:
2019-07-31 18:30:04 +08:00
parent f87f5ca73a
commit 165f4f3ecb
4 changed files with 175 additions and 110 deletions

204
.idea/workspace.xml generated
View File

@@ -2,25 +2,13 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="d564f57a-9f96-4262-9481-cacdf2b8445c" name="Default" comment="python学习">
<change afterPath="$PROJECT_DIR$/comm" afterDir="false" />
<change afterPath="$PROJECT_DIR$/common/models/member/Member.py" afterDir="false" />
<change afterPath="$PROJECT_DIR$/common/models/member/Oauth_member_bind.py" afterDir="false" />
<change afterPath="$PROJECT_DIR$/mina/sitemap.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/web/controllers/api/Member.py" afterDir="false" />
<change afterPath="$PROJECT_DIR$/web/controllers/api/__init__.py" afterDir="false" />
<change afterPath="$PROJECT_DIR$/数据库文件/food.sql" afterDir="false" />
<change afterPath="$PROJECT_DIR$/数据库文件/后台初始账户.sql" afterDir="false" />
<change afterPath="$PROJECT_DIR$/数据库文件/自动生成models.txt" afterDir="false" />
<change afterPath="$PROJECT_DIR$/common/libs/member/MemberService.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/config/base_setting.py" beforeDir="false" afterPath="$PROJECT_DIR$/config/base_setting.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/mina" beforeDir="false" afterPath="$PROJECT_DIR$/mina" afterDir="false" />
<change beforePath="$PROJECT_DIR$/mina/app.js" beforeDir="false" afterPath="$PROJECT_DIR$/mina/app.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/mina/app.json" beforeDir="false" afterPath="$PROJECT_DIR$/mina/app.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/mina/pages/index/index.js" beforeDir="false" afterPath="$PROJECT_DIR$/mina/pages/index/index.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/mina/pages/index/index.wxml" beforeDir="false" afterPath="$PROJECT_DIR$/mina/pages/index/index.wxml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/mina/project.config.json" beforeDir="false" afterPath="$PROJECT_DIR$/mina/project.config.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/web/controllers/account/Account.py" beforeDir="false" afterPath="$PROJECT_DIR$/web/controllers/account/Account.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/www.py" beforeDir="false" afterPath="$PROJECT_DIR$/www.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/web/controllers/api/Member.py" beforeDir="false" afterPath="$PROJECT_DIR$/web/controllers/api/Member.py" afterDir="false" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
@@ -30,11 +18,11 @@
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="false">
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/mina/pages/index/index.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="346">
<caret line="62" column="30" lean-forward="true" selection-start-line="62" selection-start-column="30" selection-end-line="62" selection-end-column="30" />
<state relative-caret-position="292">
<caret line="97" column="19" lean-forward="true" selection-start-line="97" selection-start-column="19" selection-end-line="97" selection-end-column="19" />
<folding>
<element signature="e#0#1517#0" />
</folding>
@@ -51,11 +39,11 @@
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/web/controllers/api/Member.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="208">
<caret line="52" lean-forward="true" selection-start-line="52" selection-end-line="52" />
<state relative-caret-position="611">
<caret line="56" column="24" lean-forward="true" selection-start-line="56" selection-start-column="24" selection-end-line="56" selection-end-column="24" />
<folding>
<element signature="e#24#65#0" expanded="true" />
</folding>
@@ -64,10 +52,19 @@
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/common/models/member/Member.py">
<entry file="file://$PROJECT_DIR$/mina/app.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="93">
<caret line="3" selection-start-line="3" selection-end-line="3" selection-end-column="26" />
<state relative-caret-position="325">
<caret line="77" column="6" lean-forward="true" selection-start-line="77" selection-start-column="6" selection-end-line="77" selection-end-column="6" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/common/libs/member/MemberService.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="527">
<caret line="18" column="8" selection-start-line="18" selection-start-column="8" selection-end-line="18" selection-end-column="8" />
</state>
</provider>
</entry>
@@ -93,15 +90,6 @@
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/www.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="651">
<caret line="21" column="41" lean-forward="true" selection-start-line="21" selection-start-column="41" selection-end-line="21" selection-end-column="41" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/config/local_setting.py">
<provider selected="true" editor-type-id="text-editor">
@@ -111,16 +99,11 @@
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/mina/pages/index/index.json">
<provider selected="true" editor-type-id="text-editor" />
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/mina/pages/index/index.wxml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="312">
<caret line="21" column="84" selection-start-line="21" selection-start-column="84" selection-end-line="21" selection-end-column="84" />
<state relative-caret-position="332">
<caret line="19" lean-forward="true" selection-start-line="19" selection-end-line="19" />
</state>
</provider>
</entry>
@@ -148,13 +131,14 @@
<find>账户</find>
<find>请输入姓名</find>
<find>getRequestHeader</find>
<find>regFlag</find>
</findStrings>
<replaceStrings>
<replace>ops_render</replace>
</replaceStrings>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/mina" />
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
@@ -194,17 +178,18 @@
<option value="$PROJECT_DIR$/web/interceptors/AuthInterceptor.py" />
<option value="$PROJECT_DIR$/web/templates/account/info.html" />
<option value="$PROJECT_DIR$/web/controllers/account/Account.py" />
<option value="$PROJECT_DIR$/mina/pages/index/index.wxml" />
<option value="$PROJECT_DIR$/web/controllers/api/__init__.py" />
<option value="$PROJECT_DIR$/www.py" />
<option value="$PROJECT_DIR$/mina/app.js" />
<option value="$PROJECT_DIR$/mina/pages/index/index.js" />
<option value="$PROJECT_DIR$/config/local_setting.py" />
<option value="$PROJECT_DIR$/config/base_setting.py" />
<option value="$PROJECT_DIR$/数据库文件/自动生成models.txt" />
<option value="$PROJECT_DIR$/common/models/member/Member.py" />
<option value="$PROJECT_DIR$/common/models/member/Oauth_member_bind.py" />
<option value="$PROJECT_DIR$/common/libs/member/MemberService.py" />
<option value="$PROJECT_DIR$/web/controllers/api/Member.py" />
<option value="$PROJECT_DIR$/mina/pages/index/index.wxml" />
<option value="$PROJECT_DIR$/mina/app.js" />
<option value="$PROJECT_DIR$/mina/pages/index/index.js" />
</list>
</option>
</component>
@@ -218,8 +203,8 @@
<packageJsonPaths />
</component>
<component name="ProjectFrameBounds">
<option name="x" value="1028" />
<option name="y" value="49" />
<option name="x" value="874" />
<option name="y" value="56" />
<option name="width" value="887" />
<option name="height" value="939" />
</component>
@@ -247,6 +232,20 @@
<item name="common" type="462c0819:PsiDirectoryNode" />
<item name="libs" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="order" type="b2602c69:ProjectViewProjectNode" />
<item name="order" type="462c0819:PsiDirectoryNode" />
<item name="common" type="462c0819:PsiDirectoryNode" />
<item name="libs" type="462c0819:PsiDirectoryNode" />
<item name="member" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="order" type="b2602c69:ProjectViewProjectNode" />
<item name="order" type="462c0819:PsiDirectoryNode" />
<item name="common" type="462c0819:PsiDirectoryNode" />
<item name="libs" type="462c0819:PsiDirectoryNode" />
<item name="user" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="order" type="b2602c69:ProjectViewProjectNode" />
<item name="order" type="462c0819:PsiDirectoryNode" />
@@ -320,7 +319,7 @@
<component name="PropertiesComponent">
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/数据库文件" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/common/libs/member" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
<property name="options.lastSelected" value="com.jetbrains.python.configuration.PythonSdkConfigurable" />
@@ -331,11 +330,11 @@
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\order\common\libs\member" />
<recent name="D:\order\数据库文件" />
<recent name="D:\order" />
<recent name="D:\order\web\controllers\api" />
<recent name="D:\order\web\templates" />
<recent name="D:\order\web\interceptors" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="D:\order\common\libs" />
@@ -437,7 +436,14 @@
<option name="project" value="LOCAL" />
<updated>1564385286785</updated>
</task>
<option name="localTasksCounter" value="11" />
<task id="LOCAL-00011" summary="python学习">
<created>1564564379831</created>
<option name="number" value="00011" />
<option name="presentableId" value="LOCAL-00011" />
<option name="project" value="LOCAL" />
<updated>1564564379831</updated>
</task>
<option name="localTasksCounter" value="12" />
<servers />
</component>
<component name="TodoView">
@@ -450,7 +456,7 @@
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="1028" y="49" width="887" height="939" extended-state="0" />
<frame x="874" y="56" width="887" height="939" extended-state="0" />
<layout>
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.29446408" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
@@ -491,13 +497,6 @@
<option name="LAST_COMMIT_MESSAGE" value="python学习" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/web/controllers/stat/Stat.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="145">
<caret line="8" lean-forward="true" selection-start-line="8" selection-end-line="8" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/web/controllers/member/Member.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="238">
@@ -773,45 +772,11 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mina/pages/index/index.wxml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="312">
<caret line="21" column="84" selection-start-line="21" selection-start-column="84" selection-end-line="21" selection-end-column="84" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mina/pages/index/index.json">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/mina/app.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-837" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mina/app.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="279">
<caret line="9" column="6" lean-forward="true" selection-start-line="9" selection-start-column="6" selection-end-line="9" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mina/pages/index/index.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="346">
<caret line="62" column="30" lean-forward="true" selection-start-line="62" selection-start-column="30" selection-end-line="62" selection-end-column="30" />
<folding>
<element signature="e#0#1517#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/local_setting.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="248">
<caret line="8" lean-forward="true" selection-start-line="8" selection-end-line="8" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/base_setting.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="204">
@@ -836,13 +801,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/common/models/member/Member.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="93">
<caret line="3" selection-start-line="3" selection-end-line="3" selection-end-column="26" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/common/models/member/Oauth_member_bind.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="155">
@@ -853,15 +811,63 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/common/models/member/Member.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="93">
<caret line="3" selection-start-line="3" selection-end-line="3" selection-end-column="26" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/common/libs/member/MemberService.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="527">
<caret line="18" column="8" selection-start-line="18" selection-start-column="8" selection-end-line="18" selection-end-column="8" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/web/controllers/api/Member.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="208">
<caret line="52" lean-forward="true" selection-start-line="52" selection-end-line="52" />
<state relative-caret-position="611">
<caret line="56" column="24" lean-forward="true" selection-start-line="56" selection-start-column="24" selection-end-line="56" selection-end-column="24" />
<folding>
<element signature="e#24#65#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mina/pages/index/index.json">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/config/local_setting.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="248">
<caret line="8" lean-forward="true" selection-start-line="8" selection-end-line="8" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mina/pages/index/index.wxml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="332">
<caret line="19" lean-forward="true" selection-start-line="19" selection-end-line="19" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mina/app.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="325">
<caret line="77" column="6" lean-forward="true" selection-start-line="77" selection-start-column="6" selection-end-line="77" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mina/pages/index/index.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="292">
<caret line="97" column="19" lean-forward="true" selection-start-line="97" selection-start-column="19" selection-end-line="97" selection-end-column="19" />
<folding>
<element signature="e#0#1517#0" />
</folding>
</state>
</provider>
</entry>
</component>
</project>

View File

@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
import hashlib,requests,random,string,json
from application import app
class MemberService():
@staticmethod
def geneAuthCode( member_info = None ):
m = hashlib.md5()
str = "%s-%s-%s" % ( member_info.id, member_info.salt,member_info.status)
m.update(str.encode("utf-8"))
return m.hexdigest()
@staticmethod
def geneSalt( length = 16 ):
keylist = [ random.choice( ( string.ascii_letters + string.digits ) ) for i in range( length ) ]
return ( "".join( keylist ) )
@staticmethod
def getWeChatOpenId(code):
url = "https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code" \
.format(app.config['MINA_APP']['appid'], app.config['MINA_APP']['appkey'], code)
r = requests.get(url)
res = json.loads(r.text)
openid = None
if 'openid' in res:
openid = res['openid']
return openid

2
mina

Submodule mina updated: 14a30e11ab...fb3fd6da10

View File

@@ -6,6 +6,7 @@ import requests,json
from common.models.member.Member import Member
from common.models.member.Oauth_member_bind import OauthMemberBind
from common.libs.Helper import getCurrentDate
from common.libs.member.MemberService import MemberService
@route_api.route("/member/login",methods = [ "GET","POST" ])
def login():
@@ -18,13 +19,11 @@ def login():
resp['msg'] = "需要code"
return jsonify(resp)
url = "https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code" \
.format(app.config['MINA_APP']['appid'], app.config['MINA_APP']['appkey'], code)
r = requests.get(url)
res = json.loads(r.text)
openid = res['openid']
openid = MemberService.getWeChatOpenId(code)
if openid is None:
resp['code'] = -1
resp['msg'] = "调用微信出错"
return jsonify(resp)
nickname = req['nickName'] if 'nickName' in req else ''
sex = req['gender'] if 'gender' in req else 0
avatar = req['avatarUrl'] if 'avatarUrl' in req else ''
@@ -37,7 +36,7 @@ def login():
model_member.nickname = nickname
model_member.sex = sex
model_member.avatar = avatar
model_member.salt = ''
model_member.salt = MemberService.geneSalt()
model_member.updated_time = model_member.created_time = getCurrentDate()
db.session.add(model_member)
db.session.commit()
@@ -53,6 +52,39 @@ def login():
bind_info = model_bind
member_info = Member.query.filter_by(id=bind_info.member_id).first()
resp['code'] = 200
resp['data'] = {'nickname': member_info.nickname}
token = "%s#%s" % (MemberService.geneAuthCode(member_info), member_info.id)
resp['data'] = {'token': token}
return jsonify(resp)
@route_api.route("/member/check-reg",methods = [ "GET","POST" ])
def checkReg():
resp = {'code': 200, 'msg': '操作成功~', 'data': {}}
req = request.values
code = req['code'] if 'code' in req else ''
if not code or len(code) < 1:
resp['code'] = -1
resp['msg'] = "需要code"
return jsonify(resp)
openid = MemberService.getWeChatOpenId(code)
if openid is None:
resp['code'] = -1
resp['msg'] = "调用微信出错"
return jsonify(resp)
bind_info = OauthMemberBind.query.filter_by(openid=openid, type=1).first()
if not bind_info:
resp['code'] = -1
resp['msg'] = "未绑定"
return jsonify(resp)
member_info = Member.query.filter_by( id = bind_info.member_id).first()
if not member_info:
resp['code'] = -1
resp['msg'] = "未查询到绑定信息"
return jsonify(resp)
token = "%s#%s"%( MemberService.geneAuthCode( member_info ),member_info.id )
resp['data'] = { 'token':token }
return jsonify(resp)