As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am about to start a new personal web / iphone app project which requries the following:
Storing data on the backend
authenticating the user via openid
Generate JSON based APIs for reading and writing data
I normally use Django for all of my projects but thought I would take this opportunity to learn something new. So, are their any Python based web development frameworks that are good alternatives to Django? Ideally ones that are strong on the points listed above?
Bonus points if the framework is:
lightweight
easy to install, deploy and developwith
Any recommendations?
I've only ever used Django and I love it, but here's a couple others (I think Flask is your best bet for a very small and very lightweight web app)
Flask
"Flask is a microframework for Python based on Werkzeug, Jinja 2 and good intentions."
- http://flask.pocoo.org/
Pylons
"Rather than focusing on a single web framework, the Pylons Project will develop a collection of related technologies. The first package from the Pylons Project was the Pyramid web framework. Other packages have been added to the collection over time, including higher-level components and applications. We hope to evolve the project into an ecosystem of well-tested, well-documented components which interoperate easily." - http://www.pylonsproject.org/
Grok
"Grok is a web application framework for Python developers. It is aimed at both beginners and very experienced web developers. Grok has an emphasis on agile development. Grok is easy and powerful." - http://grok.zope.org/
TurboGears
"TurboGears will help you to create a database-driven, ready-to-extend application in minutes. All with code that is as natural as writing a function, designer friendly templates, easy AJAX on the browser side and on the server side and with an incredibly powerful and flexible Object Relational Mapper (ORM)." - http://www.turbogears.org/
More Python Framework Resources
After a little more digging I found this resource: http://wiki.python.org/moin/WebFrameworks/
I've used web2py for a couple small projects and really liked it.
It is pretty lightweight, has great documentation, and in my experience very simple to deploy.
I've never used Django, so I'm not sure how it compares.
A few hello worlds:
def hello1():
return "Hello World"
def hello5():
return HTML(BODY(H1(T('Hello World'),_style="color: red;"))).xml() # .xml to serialize
def hello3():
return dict(message=T("Hello World"))
The corresponding view for hello3:
{{extend 'layout.html'}}
<h1>{{=message}}</h1>
Use web.py can be found at http://webpy.org/ Very simple URL handling and lots of built in functionality but still light weight
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I did the courses for HTML/CSS/JS/jQuery/Python on Codecademy and since then I've been practicing client side programming with HTML/CSS/JS/jQuery following documentation an tutorials using Notepad++ and Chrome.
I decided that it was time to start practicing server-side programming, so that I could integrate client side programming into a fully functional website. So, I asked on Yahoo Answers for the best way to practice server-side programming, and from the answers it seems that the best way is just to set up one of my old PCs as a server. The same guy also told me that PostgreSQL is not useable ('very few real servers will allow it'), that Apache is meant for PHP/MySQL, and that Python isn't used with HTML.
He said that I needed to relearn, so I am rather confused right now. I figured that Python/Ruby/PERL etc. were interchangeable with PHP, and were just different ways of doing the same thing? The same with PostgreSQL, it seemed to me that it was interchangeable with MySQL? I've not even used Python yet (aside from on Codecademy) as I haven't figured out how to use it, but I was really keen on using it for web development.
from the answers it seems that the best way is just to set up one of my old PC's as a server
For the love of $DEITY, please do not do that. If you are just starting out, you do NOT want to have learn server management, installing various tools from the ground up (SSH, FTP, Apache, MySQL, etc), setting up router and static IP address, setting up firewall/iptables, setting up domain names, etc, etc, etc all at the same time. Learning all that at the same time will be too overwhelming.
I'd suggest using a good shared hosting to reduce pain.
PostgreSQL is not useable ('very few real servers will allow it'?); that Apache is meant for PHP/MySQL; and that Python isn't used with html
Whoever told you that is totally clueless. While PostgreSQL is less popular than MySQL, most of the serious web hosting supports it; Apache is one of the most flexible web servers, it supports a very wide range of web technologies, not just mod_php; and the claim that Python is not used with HTML is an obvious untruth.
You will find guidance about all of these things on the Django website, apart from installing linux and setting up your own server box.
Please ignore that Yahoo answer.
Django supports many different database servers and is officially supported with PostgreSQL, MySQL, Oracle and SQLite.
https://docs.djangoproject.com/en/1.4/topics/install/#get-your-database-running
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
This question possibly doesn't
belong here. We'll see how the answers
pan out, if this doesn't belong here
please move it to where it belongs.
I'm following the getting started guide for Google App Engine, and I'm seeing what it can and can't do.
Basically, I'm seeing it's very similar to an MVC pattern. You create your model, then create a View that uses that Model to display information.
Not only that, but it uses a controller of some kind in this fashion:
application = webapp.WSGIApplication(
[('/', MainPage)],
debug=True)
My question is, why would you use this Google App Engine if it's the same as using a number of other MVC frameworks?
Is the only benefit you gain the load balancing being handled by Google automagically?
What is a good example of something you would need the App Engine for?
I'm trying to learn, so thanks for the discussion.
Google App Engine isn't a framework. Google App Engine is platform as a service. The App Engine is a platform for developing applications where the server components are managed for you by Google so that you aren't distracted by the mundane details of configuring a server. It let's you focus on what you do best, building software to solve a business problem.
There are many different frameworks for App Engine. A framework isn't the same as a platform. Take the Java SDK for App Engine for instance. I have a version of the JQuery Form builder, built in PHP, running on App Engine using the Java Querces servlet to interpret the PHP. Another developer I know has used Struts on App Engine, Restlets, and Spring.
Examples of what you can do:
Host a company website
Host a live chat application using the ChannelAPI (Comet for App Engine)
Host a blog using Bloog or other Blog software written in Python
Many more things
Spring and Struts are MVC frameworks whereas Restlets is a REST framework. The JQuery Form Builder I have running isn't on a framework at all as it was a hackjob solution using Querces to run PHP on App Engine.
In short, there are probably a number of frameworks you can use for Python's SDK for App Engine as well, but App Engine is not a framework.
In short, you can choose to host the application yourself or through a pay-for provider, or you can use Google's next generation model.
Perhaps the most attractive thing for me about Google App Engine is how fast I can get something running, even programming in Java. The App Engine SDK will hot-swap changes by compiling the code after every change. Deployments are also one-click in Eclipse. I can have something in production by just clicking a button.
There is also a lot of scalability on platform as a service models, which can scale up or down depending on the volume on your application.
Lastly, it's free for low usage.
I think this question misses the point of app engine. The question assumes app engine is just a web framework, but it is really an entire platform. A web framework is one layer in a stack of software that is required to run a web site. Most websites will also need a database, an operating system to run the software and database on, physical servers to run all that on, etc. App engine gives you all that wrapped up in one integrated package, which you can pay for as you need it. Plus you get some for free if you are just getting started.
Is the only benefit you gain the load balancing being handled by Google automagically?
This is a huge benefit. Have you ever tried to run a web site that is big enough to need multiple servers? How much did it cost? How much time did you spend configuring servers, patching them, etc?
The main benefit of App Engine is it's scalability for relatively low costs. This brings it's own negative points though. Because of it's scalability it locks you in to doing stuff 'their way' which leaves a plethora of 'gotchas' when first setting up.
I could list all the points but pretty much everything I have to say can be found here... Pros & Cons of Google App Engine
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
I have been learning Python for a while, and now I'd like to learn Python for the web; using Python as a back-end of a website. Where and how do I start learning this?
Example usages are: connecting to databases, and retrieving and storing information from forms.
While using a full framework like Django, Pylons or TurboGears is nice, you could also check out the more light-weight approaches.
For instance:
Werkzeug: http://werkzeug.pocoo.org/documentation/dev/tutorial.html
web.py: http://webpy.org/
Bottle: http://bottle.paws.de/
You should check out Django, which is the most popular python web framework. It has a lot of features, such as an ORM and a template language, but it's pretty easy to get started and can be very simple to use.
You might also try:
Tornado, which allows you to write pure python right into templates.
web2py is a good start as it doesn't requires installation or configuration,and has no dependencies, it's pretty simple to learn
and use.
Another good option if you wanted to speed the learning process would be take a customized crash course in python with an expert. As an example: https://www.hartmannsoftware.com/Training/Python?
There are numerous frameworks for making websites in Python. Once you are familiar with Python and the general nature of websites which would include the knowledge of HTTP, HTML you can proceed by using any of the following to make websites using Python:
Webapp2 - A simple framework to get you started with making websites and using this framework you can easily make websites and cloud services and host them on the Google App Engine service. Follow these links for more information on use and hosting: Welcome to webapp2!, Google App Engine
Django - As Alex Remedios has mentioned Django is also a very popular and widely used MVC web framework for Python. It is very comprehensive and follows the MVC web design principles. Various hosting options are also available for the same. You can learn more about Django here - The Web framework for perfectionists with deadlines, The Django Book (for learning the use of Django)
Flask - Flask is a simplistic framework for making webapplications and websites using Python. I do not extensive experience using it but from what I have read it is similar to Webapp2 in many ways but is not as comprehensive as Django. But, it is very easy to pickup and use. Flask (A Python Microframework)
As far as my knowledge goes these are the best ways to use Python in the web. To answer your second question, it is not implicitly possible to use Python in cohesion with HTML content like you would with PHP. However, there are libraries to do that too like the following:
Python Wiki - Digi Developer
Karrigell 3.1.1
If you are making extensive applications/websites the above two frameworks will pose major problems in doing simple tasks.
there are numerous options for learning python for web. I learned python to access web data from courser.org, and the tutorial was very interesting. If you want to learn python for web then I suggest you to learn python to access web data in courser.org
you can also learn python for everybody which is a specialization course with 5 courses in which each and every thing about python is given.
The fun part of courser.org is that they provide assignments with due dates which means you have to complete an assessment of each week in that week itself. They also provide quiz. You have to pass all the assignments and quizzes to get the certificate which is very easy, you can easily complete the assessment and quizzes.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Currently I have a website on the Google App Engine written in Google's webapp framework. What I want to know is what are the benefits of converting my app to run with django? And what are the downsides? Also how did you guys code your GAE apps? Did you use webapp or django? Or did you go an entirely different route and use the Java api?
Thanks
With Django on GAE, you get all the benefits (and also the non-benefits) of GAE. The benefits are mainly automatic scalability and high reliability at a very low cost.
You may want to start by checking out the following:
Stack Overflow: Django on Google App Engine
Stack Overflow: Django and App Engine
Google Code: Running Django on Google App Engine
YouTube: Google I/O 2008 - Python, Django, and App Engine
Django on Google App Engine in 13 simple steps
Google - Why App Engine?
As it turns out, I asked this same question:
Why use Django on Google App Engine?
It mostly resolved to two items:
In functionality where webapp and Django overlap, Django tends to be a bit nicer and/or more flexible.
If you were to later want to move away from GAE, Django is a porting goal.
My question (in combination with the wealth of information Daniel Vassallo provided) should answer your question completely.
GAE is a great tool for new and small projects, that do not require a relational database. I use a range of web hosting solutions.
1) I built www.gaiagps.com on the App Engine, because it was just some brochureware, and a tiny key-value store for the blog part.
2) My colleague also built a web crawler on GAE, because it was just some simple Python scripts that collected web pages. That app actually sends the data over to EC2 though, where more work is done.
3) I host www.trailbehind.com on EC2 because it uses a geo-database (PostGIS) which you would basically have to implement yourself on App Engine.
4) I host TRAC and SVN on WebFaction, because it's off-the-shelf for any slice there.
If I need to do a site in a couple of days, I use GAE. If it's a large or existing project, or has a funky database, I use something else.
I've recently changed my development from webapp to django (using app-engine-patch b/c they have added more features). Check out app-engine-patch here:
http://code.google.com/p/app-engine-patch/
I really liked how simple webapp was to use and it had all the tools I needed for a while. However when it came to adding user accounts on to my site I found that I either had to roll my own system (with sessions etc. which can get complicated on GAE) or use google/gmail accounts with webapp.
I didn't want my users to have to sign up for google/gmail first before they signed up with me.
Therefore I'm trying out django with app-engine-patch because they have already implemented the user functionality from django and it seems to work just fine.
With Django vs. Webapp they both have similar performance, and both offer the automatic scalablity etc.
Django has some nifty form validation etc. but i see the user stuff as the biggest difference between the two.
Good Luck.
I did some django/GAE work a last summer (see Plunging into Web Development). The App Engine Patch is a must.
The only real problem I ran into was the 1M upload/download limit imposed by GAE. I could upload larger files by using HTTP directly to S3, but I couldn't retrieve them through GAE. I hope they've lifted this restriction since then.
If you are looking other GAE CMS frameworks besides Django, take a look at Vosao. It is a Java CMS framework which uses Velocity for templates. The framework is still in alpha and is under heavy development. The current version (0.2.3) is stable and highly functional.
You can see an example of a working Vosao site on my personal domain.
I prefer webapp. It scales better according to Google and seems to better integrated with the App Engine infrastructure. Plus it's more lightweight.
try kay-framework if you are looking for framework specifically designed for google app engine.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
Looking to do a very small, quick 'n dirty side project. I like the fact that the Google App Engine is running on Python with Django built right in - gives me an excuse to try that platform... but my question is this:
Has anyone made use of the app engine for anything other than a toy problem? I see some good example apps out there, so I would assume this is good enough for the real deal, but wanted to get some feedback.
Any other success/failure notes would be great.
I have tried app engine for my small quake watch application
http://quakewatch.appspot.com/
My purpose was to see the capabilities of app engine, so here are the main points:
it doesn't come by default with Django, it has its own web framework which is pythonic has URL dispatcher like Django and it uses Django templates
So if you have Django exp. you will find it easy to use
But you can use any pure python framework and Django can be easily added see
http://code.google.com/appengine/articles/django.html
google-app-engine-django (http://code.google.com/p/google-app-engine-django/) project is excellent and works almost like working on a Django project
You can not execute any long running process on server, what you do is reply to request and which should be quick otherwise appengine will kill it
So if your app needs lots of backend processing appengine is not the best way
otherwise you will have to do processing on a server of your own
My quakewatch app has a subscription feature, it means I had to email latest quakes as they happend, but I can not run a background process in app engine to monitor new quakes
solution here is to use a third part service like pingablity.com which can connect to one of your page and which executes the subscription emailer
but here also you will have to take care that you don't spend much time here
or break task into several pieces
It provides Django like modeling capabilities but backend is totally different but for a new project it should not matter.
But overall I think it is excellent for creating apps which do not need lot of background processing.
Edit:
Now task queues can be used for running batch processing or scheduled tasks
Edit:
after working/creating a real application on GAE for a year, now my opnion is that unless you are making a application which needs to scale to million and million of users, don't use GAE. Maintaining and doing trivial tasks in GAE is a headache due to distributed nature, to avoid deadline exceeded errors, count entities or do complex queries requires complex code, so small complex application should stick to LAMP.
Edit:
Models should be specially designed considering all the transactions you wish to have in future, because entities only in same entity group can be used in a transaction and it makes the process of updating two different groups a nightmare e.g. transfer money from user1 to user2 in transaction is impossible unless they are in same entity group, but making them same entity group may not be best for frequent update purposes....
read this http://blog.notdot.net/2009/9/Distributed-Transactions-on-App-Engine
I am using GAE to host several high-traffic applications. Like on the order of 50-100 req/sec. It is great, I can't recommend it enough.
My previous experience with web development was with Ruby (Rails/Merb). Learning Python was easy. I didn't mess with Django or Pylons or any other framework, just started from the GAE examples and built what I needed out of the basic webapp libraries that are provided.
If you're used to the flexibility of SQL the datastore can take some getting used to. Nothing too traumatic! The biggest adjustment is moving away from JOINs. You have to shed the idea that normalizing is crucial.
Ben
One of the compelling reasons I have come across for using Google App Engine is its integration with Google Apps for your domain. Essentially it allows you to create custom, managed web applications that are restricted to the (controlled) logins of your domain.
Most of my experience with this code was building a simple time/task tracking application. The template engine was simple and yet made a multi-page application very approachable. The login/user awareness api is similarly useful. I was able to make a public page/private page paradigm without too much issue. (a user would log in to see the private pages. An anonymous user was only shown the public page.)
I was just getting into the datastore portion of the project when I got pulled away for "real work".
I was able to accomplish a lot (it still is not done yet) in a very little amount of time. Since I had never used Python before, this was particularly pleasant (both because it was a new language for me, and also because the development was still fast despite the new language). I ran into very little that led me to believe that I wouldn't be able to accomplish my task. Instead I have a fairly positive impression of the functionality and features.
That is my experience with it. Perhaps it doesn't represent more than an unfinished toy project, but it does represent an informed trial of the platform, and I hope that helps.
The "App Engine running Django" idea is a bit misleading. App Engine replaces the entire Django model layer so be prepared to spend some time getting acclimated with App Engine's datastore which requires a different way of modeling and thinking about data.
I used GAE to build http://www.muspy.com
It's a bit more than a toy project but not overly complex either. I still depend on a few issues to be addressed by Google, but overall developing the website was an enjoyable experience.
If you don't want to deal with hosting issues, server administration, etc, I can definitely recommend it. Especially if you already know Python and Django.
I think App Engine is pretty cool for small projects at this point. There's a lot to be said for never having to worry about hosting. The API also pushes you in the direction of building scalable apps, which is good practice.
app-engine-patch is a good layer between Django and App Engine, enabling the use of the auth app and more.
Google have promised an SLA and pricing model by the end of 2008.
Requests must complete in 10 seconds, sub-requests to web services required to complete in 5 seconds. This forces you to design a fast, lightweight application, off-loading serious processing to other platforms (e.g. a hosted service or an EC2 instance).
More languages are coming soon! Google won't say which though :-). My money's on Java next.
This question has been fully answered. Which is good.
But one thing perhaps is worth mentioning.
The google app engine has a plugin for the eclipse ide which is a joy to work with.
If you already do your development with eclipse you are going to be so happy about that.
To deploy on the google app engine's web site all I need to do is click one little button - with the airplane logo - super.
Take a look the the sql game, it is very stable and actually pushed traffic limits at one point so that it was getting throttled by Google. I have seen nothing but good news about App Engine, other than hosting you app on servers someone else controls completely.
I used GAE to build a simple application which accepts some parameters, formats and send email. It was extremely simple and fast. I also made some performance benchmarks on the GAE datastore and memcache services (http://dbaspects.blogspot.com/2010/01/memcache-vs-datastore-on-google-app.html ). It is not that fast. My opinion is that GAE is serious platform which enforce certain methodology. I think it will evolve to the truly scalable platform, where bad practices simply not allowed.
I used GAE for my flash gaming site, Bearded Games. GAE is a great platform. I used Django templates which are so much easier than the old days of PHP. It comes with a great admin panel, and gives you really good logs. The datastore is different than a database like MySQL, but it's much easier to work with. Building the site was easy and straightforward and they have lots of helpful advice on the site.
I used GAE and Django to build a Facebook application. I used http://code.google.com/p/app-engine-patch as my starting point as it has Django 1.1 support. I didn't try to use any of the manage.py commands because I assumed they wouldn't work, but I didn't even look into it. The application had three models and also used pyfacebook, but that was the extent of the complexity. I'm in the process of building a much more complicated application which I'm starting to blog about on http://brianyamabe.com.