|
|
|
|
| Advertise on this site |
The popularity of Python language is growing. In this article we review ten most interesting Python frameworks.
Django is most popular Python web framework hich loosely follows the model-view-controller design pattern. It was originally developed to manage several news-oriented sites for The World Company of Lawrence, Kansas, and was released publicly under a BSD license in July 2005
Free and open source full-stack enterprise framework for agile development of secure database-driven web-based applications, written and programmable in Python created by Massimo Di Pierro.
Pylons is a lightweight web framework emphasizing flexibility and rapid development. It combines the very best ideas from the worlds of Ruby, Python and Perl, providing a structured but extremely flexible Python web framework. It's also one of the first projects to leverage the emerging WSGI standard, which allows extensive re-use and flexibility - but only if you need it. Out of the box, Pylons aims to make web development fast, flexible and easy.
Quixote is a simple yet flexible and powerful framework for writing Web-based applications using Python.
Zope is a free and open-source, object-oriented web application server written in the Python programming language. Zope stands for "Z Object Publishing Environment." It can be almost fully managed with a web-based user interface. Zope publishes on the web Python objects that are typically persisted in an object database, ZODB. Basic object types, such as documents, images, and page templates, are available for the user to create and manage through the web. Specialized object types, such as wikis, blogs, and photo galleries, are available as third-party add-ons (called products), and there is a thriving community of small businesses creating custom web applications as Zope products.
TurboGears is a Python web application framework consisting of several underlying components such as MochiKit, SQLObject, CherryPy and Kid. TurboGears was created in 2005 by Kevin Dangoor as the framework behind the as yet unreleased Zesty News product.
Webware for Python is a suite of Python packages and tools for developing object-oriented, web-based applications. The suite uses well known design patterns and includes a fast Application Server, Servlets, Python Server Pages (PSP), Object-Relational Mapping, Task Scheduling, Session Management, and many other features. Webware is very modular and easily extended. Webware for Python is well proven and platform-independent. It is compatible with multiple web servers, database servers and operating systems.
CherryPy is a pythonic, object-oriented HTTP framework. CherryPy allows developers to build web applications in much the same way they would build any other object-oriented Python program. This results in smaller source code developed in less time.
Porcupine is a Python based web application server that provides an object oriented web application framework for developing Rich Internet Applications rapidly. Many of the tasks required for building web applications as you know them, are either eliminated or simplified. For instance, when developing a Porcupine application you don't have to design a relational database. You only have to design and implement your business objects as Python classes, using the building blocks provided by the framework (datatypes). Porcupine integrates an in-process native object database along with the Porcupine Object Query Language; no mapping is required.
Karrigell is a flexible Python web framework, with a clear and intuitive syntax. It is independant from any database, ORM or templating engine, and lets the programmer choose between a variety of coding styles. The package includes a powerful built-in web server, so there's no need to download, install and configure a separate one, and a pure-Python database engine, PyDbLite, which is used for the demos.Karrigell can be configured to work with external web servers (Apache, Xitami, LightTPD) ; the scripts can use all the databases for which a Python API exists (sqlite, mySql, PostGreSQL, ZODB, etc). An application, InstantSite, is provided to easily create and edit MySQL databases and generate scripts that handle the usual CRUD operations on database tables
Spyce is technology similar to PHP that can be used to embed Python code into webpages. Spyce is free software, distributed under a BSD-style licence, with some additional restrictions about documentation notices.
Drupy is a Python port of the Drupal content management system built on Django. Drupy had previously been a direct PHP-to-Python port of Drupal, but this had proven to be quite unmanageable. Drupy has taken a new direction in which it is being built on top of the Django Framework. This will offer maximum stability and a much more efficient development cycle.
Zine is a weblog engine written in Python. It's Open Source, free and developed with a focus on security and usability.
Feel free to subscribe to our RSS feed.
Hello my name is Igor Kononuchenko. I'm leading the development process of Django web startup. I tell about my experience of introducing Continuous Integration to Django project.
Relatively small project with a team of four developers. We want to make the process of development as close as possible to the described in the book Continuous Integration: Improving Software Quality and Reducing Risk. There were the following requests:
The doctest was rejected immediately(it has few common with TDD). In unit-testing I faced the following problems:
- The models.py file. The test runner looks for any subclass of unittest. TestCase in this module.
- A file called tests.py in the application directory -- i.e., the directory that holds models.py. Again, the test runner looks for any subclass of unittest.TestCase in this module from here.
Standard mechanism of test running requires the hard integration of the test in the work project. I am disagree with this. I think that the tests should be separated from production code and situated in a separate folder. Besides I wasn't satisfied with the fact that Django created MySql database for tests that slowed badly the tests runs.
The problem with MySql was solved by changing Mysql to Sqlite (:memory – it uses RAM during testing). The solution was taken from here.
For the reason of the placing all the tests in one folder, the file suite.py was created in the same folder that contained the following code:
Here are two functions from the code above:
For mocking we used the PyMock - it is rather inconvinient with its low informative error messages (inappropriate actions). Maybe there are better libraries.
For the code checking was used the pep8 utility.
Introduction of this utility caused some dissatisfaction from developers. But it is very useful to keep the code clean.
Somebody can say that Python project doesn't need a build server. I don't know how to name it in another way. In my case it is a Windows server with a TeamCity installed. TeamCity is a rather convenient thing with excellent web interface. It's very simple and fast to configure. It allows to do Pre-tested Commit (in my case it didn't work well). It periodically checks the SVN (we are using it) on the code changing and runs the build script - in my case it is a simple build.bat file which makes update from SVN, runs tests and restarts Apache on our server. From this moment we can open and test the project on the build server. The members of the project are informed about success or fail of the build in depends of notification configuration.
For the team it was the first serious continuous integration project. It was also the first serious django project. The deadline as always was very close. Probably not all development stages were close to the ideal but the process was started. In plans we want to integrate Selenium tests, and make the automatic deploy to production.
These do work.
Here is the
Amazing ,how can he do that!
I like this post. It help me
pretty! I wish you can keep
Thanks for sharing the post!
I can use it in
That's very nice plugin! I
These tips help me a lot!
Thanks for sharing the post!
Very good plugin! I like it!