2012-12-07 3 views
6

chiave di classe (codificata = nessuna) Una chiave univoca per un oggetto Datastore.come convertire la versione stringa di una chiave in un modulo in cui è possibile utilizzare la funzione get() per ottenere l'istanza dell'entità

Una chiave può essere convertita in una stringa passando l'oggetto Key a str(). La stringa è "urlsafe" - utilizza solo caratteri validi per l'uso negli URL. La rappresentazione della stringa della chiave può essere riconvertita in un oggetto Key passandolo al costruttore Key (l'argomento codificato).

Nota: la rappresentazione della stringa di una chiave sembra criptica, ma non crittografata! Può essere riconvertito nei dati della chiave non elaborata, sia per tipo che per identificatore. Se non si desidera esporre questi dati ai propri utenti (e consentire loro di intuire facilmente le chiavi di altre entità), quindi crittografare queste stringhe o utilizzare qualcos'altro.

codificato La forma di un'istanza chiave da convertire in una chiave.

risposta

3

Se sto capendo correttamente, si desidera prendere una stringa chiave codificata e convertirla nuovamente in un oggetto Key. Se è così, si può fare questo:

from google.appengine.ext.db import Key 

# ... 
key_str = '<your_key_string>'  
key_obj = Key(key_str) # or Key(encoded=key_str) 

entity = db.get(key_obj) # Although the string will work here as well 
13

Nel caso in cui si sta utilizzando Python NDB, quindi è possibile convertire una chiave in una stringa sicura URL come segue:

key_str = yourmodel.key.urlsafe() 

è possibile convertire indietro da una stringa sicura URL torna chiave come segue:

my_key = ndb.Key(urlsafe=key_str) 

per ulteriori informazioni un'occhiata a NDB Key class