Repository navigation
Expand file tree
/
Copy pathweb-framework.html
More file actions
101 lines (91 loc) · 4.46 KB
/
Copy pathweb-framework.html
File metadata and controls
101 lines (91 loc) · 4.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<!doctype html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="language" content="English" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Full Stack Python</title>
<meta name="description" content="Full stack Python shows how an entire Python web application is built, from the server to the front end JavaScript.">
<meta name="author" content="Matt Makai">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="/css/c.css" />
<link rel="stylesheet" href="/css/bootstrap-responsive.min.css" />
<script src="/js/modernizr-2.0.6.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-19910497-7']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<div class="container">
<div class="row">
<div class="span12">
<div class="logo-header-section">
<a href="/"><img src="../img/full-stack-python-logo-bw.png" height="42" width="42" class="logo-image" /></a>
<span class="logo-title"><a href="/">Full Stack Python</a></span>
</div>
</div>
</div>
<h1>Web Framework</h1>
<p>A web application framework is a collection of libraries that
provide functionality to accomplish common operations for the web. These
common operations include:</p>
<ol class="arabic simple">
<li>URL routing</li>
<li>HTML, XML, JSON, and other output templating</li>
<li>Database manipulation</li>
<li>Cross-site request forgery (CSRF) and Cross-site scripting (XSS) protection</li>
</ol>
<p>Not all web frameworks include functionality for all of the above
functionality. Frameworks must balance between "being all things to all
people but very complicated" or doing only certain things well without
prescription for how to do other functions.</p>
<p>For example, the Django web application framework includes an
Object-Relational Mapping (ORM) layer that abstracts relational database
read, write, query, and delete operations. However, the ORM layer in Django
does not work (without modification) on non-relational databases such
<a class="reference external" href="http://www.mongodb.org/">MongoDB</a> and <a class="reference external" href="http://docs.basho.com/">Riak</a>.
Other web frameworks such as Flask and Pyramid are generally easier to
use with non-relational databases by incorporating external Python libraries.</p>
<div class="section" id="web-framework-monitoring">
<h2>Web Framework Monitoring</h2>
<p>Logging is a common mechanism for monitoring web applications written with a
web framework. Runtime exceptions that prevent code from running are
important to log to investigate and fix the source of the problems.
Informational and debugging logging also helps to understand how the
application is performing even if code is working as intended.</p>
<p>Logging is often grouped into several categories:</p>
<ol class="arabic simple">
<li>Information</li>
<li>Debug</li>
<li>Warning</li>
<li>Error</li>
</ol>
</div>
<div class="section" id="web-framework-resources">
<h2>Web Framework Resources</h2>
<p><a class="reference external" href="http://www.djangoproject.com/">Django</a>,
<a class="reference external" href="http://flask.pocoo.org/">Flask</a>,
<a class="reference external" href="http://bottlepy.org/docs/dev/">Bottle</a>,
<a class="reference external" href="http://www.pylonsproject.org/">Pyramid</a>, and
<a class="reference external" href="http://webpy.org/">web.py</a> are the most common Python web frameworks.</p>
</div>
<hr/>
<div class="footer pull-right">
<a href="http://www.mattmakai.com/" class="underline">Matt Makai</a> 2013
</div>
</div>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="/js/bootstrap.min.js"></script>
</body>
</html>