single_file_tasks Notez ce que vous avez appris dans le didacticiel.
| Fichier | La description | 
|---|---|
| tasks.py | python code | 
| schema.sql | Paramètre initial de la base de données sql | 
| tasks.db | Stocker les données de tâche | 
| static/style.css | css | 
| templates/layout.mako | layout | 
| templates/new.mako | Création de tâches | 
| templates/list.mako | Liste de tâches | 
| templates/notfound.mako | 404 | 
traitement principal
    #Déclaration
    settings = {}
    settings['reload_all'] = True
    settings['debug_all'] = True
    settings['mako.directories'] = os.path.join(here, 'templates')
    settings['db'] = os.path.join(here, 'tasks.db')
    #Créez une session. la session est basée sur les cookies.(document.Vous pouvez le vérifier avec un cookie.)
    session_factory = UnencryptedCookieSessionFactoryConfig('itsaseekreet')
    #Verser les paramètres dans la pyramide
    config = Configurator(settings=settings, session_factory=session_factory)
    #Réglage du chemin
    config.add_route('list', '/')
    config.add_route('new', '/new')
    config.add_route('close', '/close/{id}')
    #Spécifier un chemin statique
    config.add_static_view('static', os.path.join(here, 'static'))
    #Décorateur (@view_config et@Trouver un abonné) et l'ajouter aux paramètres
    config.scan()
    #paramètres du serveur Web
    app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 8080, app)
    server.serve_forever()
Les requêtes sont exécutées en premier pour les requêtes. (preExecute () dans synfony) Le traitement de la connexion à la base de données est en cours. Le processus de déconnexion de la connexion DB à la fin de la demande est inclus. (postExecute)
Appelé une seule fois immédiatement après le démarrage du serveur Web.
return HTTPFound(location=request.route_url('list'))Redirige vers une page spécifique pour éviter une double inscription en rechargeant la page.
python
import logging
logging.basicConfig()
log = logging.getLogger(__file__)
log.warn('NewRequest')
Il met en cache le résultat de la fonction et renvoie uniquement le résultat sans traitement après la première fois.
python
  session_factory = UnencryptedCookieSessionFactoryConfig('itsaseekreet')
  config = Configurator(settings=settings, session_factory=session_factory)
python
  request.session.flash('Task was successfully reopen!')  #Définir la valeur de la session
  #côté modèle:
  % if request.session.peek_flash(): #Vérifiez si la session a une valeur
      request.session.pop_flash()     #Afficher la valeur de la session
  % endif
select
  rs = request.db.execute("select id, name from tasks where closed = 0")
  tasks = [dict(id=row[0], name=row[1]) for row in rs.fetchall()]
Obtenez seulement 1 enregistrement
    row = rs.fetchone()
    tasks = [dict(id=row[0], name=row[1])]
Se référer au résultat de la sélection par nom de colonne
    request.db = sqlite3.connect(settings['db'])
+   request.db.row_factory = sqlite3.Row
-   tasks = [dict(id=row[0], name=row[1]) for row in rs.fetchall()]
+   tasks = [dict(id=row["id"], name=row["name"]) for row in rs.fetchall()]
update
  task_id = int(request.matchdict['id'])  #Conversion de type et définition
  #placeholder
  request.db.execute("update tasks set closed = ? where id = ?", (0, task_id))
  request.db.commit()  #Il ne sera enregistré que si vous vous engagez.
Validation automatique activée
    request.db = sqlite3.connect(settings['db'])
    request.db.isolation_level = None
#Ou
    request.db = sqlite3.connect(settings['db'], isolation_level = None)
rollback
  request.db.rollback()
Stocker la valeur dans le configurateur
mysettings['val'] = "hello"
config = Configurator(settings=mysettings)
Se référer à la valeur stockée dans le configurateur(@subscribers)
request = event.request
settings = request.registry.settings
log.warn(settings['val'])
Se référer à la valeur stockée dans le configurateur(@view)
settings = request.registry.settings
log.warn(settings['val'])
py:development.ini、production.demander la valeur de ini.registry.Stocker dans les paramètres
{'debug_routematch': True, 
 'pyramid.default_locale_name': 'en',
 'db': '/home/user/local/virtualenv/tasks/tasks.db',
 'pyramid.reload_templates': True,
 'debug_templates': True,
 'debug_all': True,
 'reload_templates': True,
 'mako.directories': '/home/user/local/virtualenv/tasks/templates',
 'pyramid.debug_routematch': True,
 'reload_resources': True,
 'default_locale_name': 'en',
 'pyramid.reload_assets': True,
 'reload_all': True,
 'debug_authorization': True,
 'pyramid.debug_authorization': True,
 'pyramid.reload_resources': True,
 'reload_assets': True,
 'pyramid.debug_notfound': True,
 'pyramid.debug_templates': True,
 'prevent_http_cache': False,
 'debug_notfound': True,
 'pyramid.prevent_http_cache': False}
python
@view_config(context='pyramid.exceptions.NotFound', renderer='notfound.mako')
def notfound_view(request):
    request.response.status = '404 Not Found'
    return {}
$ {request.route_url ('page_interdite')}python
@view_config(context=Exception, renderer='exception.mako')
def error_view(exception, request):
    return {'message':exception}
python
here = os.path.dirname(os.path.abspath(__file__))
Exemple d'utilisation
os.path.join(here, 'schema.sql')
settings['mako.directories'] = os.path.join(here, 'templates')