@@ -347,17 +347,17 @@ <h1>Web Framework</h1>
347347common operations include:</ p >
348348< ol class ="arabic simple ">
349349< li > URL routing</ li >
350- < li > HTML, XML, JSON, and other output templating</ li >
350+ < li > HTML, XML, JSON, and other output format templating</ li >
351351< li > Database manipulation</ li >
352- < li > Cross-site request forgery (CSRF) and Cross-site scripting (XSS) protection </ li >
352+ < li > Security against Cross-site request forgery (CSRF) and other attacks </ li >
353353</ ol >
354354< p > Not all web frameworks include functionality for all of the above
355- functionality. Frameworks must balance between "being all things to all
356- people but very complicated" or doing only certain things well without
357- prescription for how to do other functions .</ p >
355+ functionality. Frameworks fall somewhere between simply executing a
356+ single use case and attempting to be everything to every developer with
357+ increased complexity .</ p >
358358< p > For example, the Django web application framework includes an
359359Object-Relational Mapping (ORM) layer that abstracts relational database
360- read, write, query, and delete operations. However, the ORM layer in Django
360+ read, write, query, and delete operations. However, Django's ORM
361361does not work (without modification) on non-relational databases such
362362< a class ="reference external " href ="http://www.mongodb.org/ "> MongoDB</ a > and < a class ="reference external " href ="http://docs.basho.com/ "> Riak</ a > .
363363Other web frameworks such as Flask and Pyramid are generally easier to
@@ -376,6 +376,16 @@ <h2>Web Framework Monitoring</h2>
376376< li > Warning</ li >
377377< li > Error</ li >
378378</ ol >
379+ < p > Logging errors that occur while a web framework is running is crucial to
380+ understanding how your application is performing.
381+ < a class ="reference external " href ="http://raven.readthedocs.org/en/latest/ "> Raven</ a > is a Python client for the
382+ < a class ="reference external " href ="https://github.com/getsentry/sentry "> Sentry</ a > exception logging and
383+ aggregation application. Raven provides the way to send exceptions to
384+ Sentry, which should be deployed on a separate server from your production
385+ infrastructure. Raven can also be used by Python scripts to send other
386+ log data to Sentry for aggregation. Sentry provides a clean web application
387+ interface for viewing the exceptions. Sentry can also be configured with a
388+ mail plugin to send emails when exceptions occur.</ p >
379389</ div >
380390< div class ="section " id ="web-framework-resources ">
381391< h2 > Web Framework Resources</ h2 >
0 commit comments