Permalink
Browse files

readme file

  • Loading branch information...
1 parent 72d8a5a commit 77dc629f261a3fbe775141d4d03892006851ba0c Simon Willison committed May 11, 2009
Showing with 59 additions and 0 deletions.
  1. +59 −0 readme.txt
View
@@ -0,0 +1,59 @@
+djng
+====
+(pronounced "djing", with a mostly-silent "d")
+
+djng is a micro-framework that depends on a macro-framework (Django).
+
+My definition of a micro-framework: something that lets you create an entire
+Python web application in a single module:
+
+ import djng
+
+ def index(request):
+ return djng.Response('Hello, world')
+
+ if __name__ == '__main__':
+ djng.serve(index, '0.0.0.0', 8888)
+
+Or if you want hello and goodbye URLs, and a custom 404 page:
+
+import djng
+
+ app = djng.ErrorWrapper(
+ djng.Router(
+ (r'^hello$', lambda request: djng.Response('Hello, world')),
+ (r'^goodbye$', lambda request: djng.Response('Goodbye, world')),
+ ),
+ custom_404 = lambda request: djng.Response('404 error'),
+ custom_500 = lambda request: djng.Response('500 error')
+ )
+
+ if __name__ == '__main__':
+ djng.serve(app, '0.0.0.0', 8888)
+
+Under the hood, djng will re-use large amounts of functionality from Django,
+while re-imagining various aspects of the framework. A djng request object is
+a Django HttpRequest object; a djng response object is a Django HttpResponse.
+Django's template language and ORM will be available. Ideally, Django code
+will run almost entirely unmodified under djng, and vice versa.
+
+Services, not Settings
+======================
+
+I dislike Django's settings.py file - I often find I want to reconfigure
+settings at run-time, and I'm not comfortable with having arbitrary settings
+for so many different aspects of the framework.
+
+djng experiments with /services/ in place of settings. Services are bits of
+shared functionality that djng makes available to applications - for example,
+caching, templating, ORM-ing and mail-sending.
+
+Most of the stuff that Django sets up in settings.py will in djng be set up by
+configuring services. These services will be designed to be reconfigured at
+run-time, using a mechanism similar to Django middleware.
+
+Some things that live in settings.py that really don't belong there -
+middleware for example. These will generally be constructed by composing
+together a djng application in code.
+
+I'm still figuring out how the syntax for services should work.

0 comments on commit 77dc629

Please sign in to comment.