หากเป็นข้อมูลที่ละเอียดอ่อนคุณไม่ควรเก็บไว้ในซอร์สโค้ดเนื่องจากจะถูกตรวจสอบในการควบคุมแหล่งที่มา คนที่ไม่ถูกต้อง (ภายในหรือภายนอกองค์กรของคุณ) อาจพบได้ที่นั่น นอกจากนี้สภาพแวดล้อมการพัฒนาของคุณอาจใช้ค่ากำหนดค่าที่แตกต่างจากสภาพแวดล้อมการผลิตของคุณ หากค่าเหล่านี้ถูกเก็บไว้ในโค้ดคุณจะต้องรันโค้ดที่แตกต่างกันในการพัฒนาและการผลิตซึ่งเป็นวิธีที่ยุ่งและไม่ดี
ในโครงการของฉันฉันใส่ข้อมูลการกำหนดค่าในที่เก็บข้อมูลโดยใช้คลาสนี้:
from google.appengine.ext import ndb
class Settings(ndb.Model):
name = ndb.StringProperty()
value = ndb.StringProperty()
@staticmethod
def get(name):
NOT_SET_VALUE = "NOT SET"
retval = Settings.query(Settings.name == name).get()
if not retval:
retval = Settings()
retval.name = name
retval.value = NOT_SET_VALUE
retval.put()
if retval.value == NOT_SET_VALUE:
raise Exception(('Setting %s not found in the database. A placeholder ' +
'record has been created. Go to the Developers Console for your app ' +
'in App Engine, look up the Settings record with name=%s and enter ' +
'its value in that record\'s value field.') % (name, name))
return retval.value
แอปพลิเคชันของคุณจะทำสิ่งนี้เพื่อรับค่า:
API_KEY = Settings.get('API_KEY')
หากมีค่าสำหรับคีย์นั้นในที่เก็บข้อมูลคุณจะได้รับ หากไม่มีระบบจะสร้างเรกคอร์ดตัวยึดตำแหน่งและข้อยกเว้นจะถูกโยนทิ้ง ข้อยกเว้นจะเตือนให้คุณไปที่ Developers Console และอัปเดตระเบียนตัวยึด
ฉันพบว่าสิ่งนี้ไม่สามารถคาดเดาได้จากการตั้งค่าการกำหนดค่า หากคุณไม่แน่ใจว่าจะตั้งค่า config อะไรแค่รันโค้ดแล้วมันจะบอกคุณเอง!
โค้ดด้านบนใช้ไลบรารี ndb ซึ่งใช้ memcache และ datastore ภายใต้ประทุนดังนั้นจึงรวดเร็ว
อัปเดต:
jelderถามถึงวิธีค้นหาค่า Datastore ในคอนโซล App Engine และตั้งค่า นี่คือวิธี:
ไปที่https://console.cloud.google.com/datastore/
เลือกโครงการของคุณที่ด้านบนสุดของหน้าหากยังไม่ได้เลือก
ในชนิดกล่องแบบหล่นลงเลือกการตั้งค่า
หากคุณรันโค้ดด้านบนคีย์ของคุณจะปรากฏขึ้น พวกเขาทั้งหมดจะมีค่าไม่ได้ตั้งค่า คลิกแต่ละอันแล้วตั้งค่า
หวังว่านี่จะช่วยได้!