Je suis très nouveau sur python et après une brève introduction sur python + moteur d'application Google, j'ai commencé à travailler sur un projet pilote. J'ai téléchargé deux entités UserDetails et PhoneBook avec des données sur le moteur de l'application. Maintenant, dans mon interface utilisateur, j'essaie d'abord d'entrer le nom de l'utilisateur, puis l'interroger pour obtenir l'identifiant de UserDetails, puis d'utiliser l'identifiant de l'utilisateur récupéré que j'interroge le répertoire pour obtenir les entrées de son répertoire. Voici mon code pour l'interface utilisateur,Problème lors de l'importation de classes à partir du fichier de modèles dans GAE
#!/usr/bin/env python
import wsgiref.handlers
from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from models import UserDetails,PhoneBook
#import models
class showPhoneBook(db.Model):
""" class to store the user_name to db """
user_name = db.StringProperty(required=True)
class MyHandler(webapp.RequestHandler):
def get(self):
""" Query type 1 """
#p = db.GqlQuery('SELECT * FROM UserDetails WHERE user_name = :1', user_name)
""" Query type 2 """
#p = UserDetails.gql('WHERE user_name = :1', user_name)
""" Query type 3 """
p = UserDetails.all().filter('user_name = ', user_name)
result1 = p.get()
for itr1 in result1:
userId = itr.user_id
""" Query type 1 """
#q = db.GqlQuery('SELECT * FROM PhoneBook WHERE user_id = :1', userId)
""" Query type 2 """
#q = PhoneBook.gql('WHERE user_id = :1', userId)
""" Query type 3 """
q = PhoneBook.all().filter('user_id = ', userId)
values = {
'phoneBookValues': q
}
self.response.out.write(
template.render('phonebook.html', values))
def post(self):
phoneBookuserID = showPhoneBook(
user_name = self.request.get('username'))
phonebookuserID.put()
self.redirect('/')
def main():
app = webapp.WSGIApplication([
(r'.*',MyHandler)], debug=True)
wsgiref.handlers.CGIHandler().run(app)
if __name__ == "__main__":
main()
Le problème est que je reçois cette erreur dans mes journaux que GAE ne peut pas importer les UserDetails/classe de téléphone à partir de modèles,
<type 'exceptions.ImportError'>: cannot import name UserDetails
Traceback (most recent call last):
File "/base/data/home/apps/bulkloader160by2/1-4.337299749289926105/main.py", line 7, in <module>
from models import UserDetails,PhoneBook
et quand je supprimer from models import UserDetails,PhoneBook
et utiliser import models
, je reçois,
global name 'UserDetails' is not defined
Traceback (most recent call last):
File "/base/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 507, in __call__
handler.get(*groups)
File "/base/data/home/apps/bulkloader160by2/1-4.337300095868541686/main.py", line 19, in get
p = UserDetails.all().filter('user_name = ', user_name)
NameError: global name 'UserDetails' is not defined
Ceci est mon fichier models.py où j'ai mes UserDetails et les classes définies de l'annuaire téléphonique. J'ai stocké ce fichier dans le répertoire racine.
#!/usr/bin/env python
from google.appengine.ext import db
#Table structure of User Details table
class UserDetails(db.Model):
user_id = db.IntegerProperty(required = True)
user_name = db.StringProperty(required = True)
mobile_number = db.PhoneNumberProperty(required = True)
#Table structure of Phone Book table
class PhoneBook(db.Model):
contact_id = db.IntegerProperty(required=True)
user_id = db.IntegerProperty(required=True)
contact_name = db.StringProperty(required=True)
contact_number = db.PhoneNumberProperty(required=True)
Étant nouveau python Je ne suis pas en mesure de comprendre pourquoi ne suis pas en mesure d'importer mes classes de mon fichier models.py et comment définir/obtenir le user_name post(self)
-get(self)
. S'il vous plaît pardonnez-moi si je suis naïf, mais votre aide est la plus appréciée si vous pouvez m'aider à régler correctement mon code.
Merci.
mis à jour ma réponse. –