4 ms·
Ask HN: What Python web programming frameworks and tools are you using?
I'm interested in hearing from the community about what tools you are using for building web applications in Python.
So, what tools, databases, web servers and frameworks are you using for your latest Python web application projects? Or, if you've abandoned Python, what language have you moved to, and why?
- thinkxl 9y agoBottle[0], Dataset[1], and pipenv[3]. With those three tools I can create a web app with basic functionality with few lines of code, like a prototype. For example: from datetime import datetime from bottle import get, post, request, run, template, redirect import dataset db = dataset.connect('sqlite:///database.sqlite') entries_table = db['entries'] @get('/') def show_entries(): entries = entries_table.all() entries_sorted = sorted(entries, reverse=True) return template('entries', entries=entries_sorted) @post('/add') def add_entry() entry = request.forms.get('entry') entries_table.insert(dict( text=entry, created_by=datatime.utcnow(), )) return redirect('/') run(reloader=True, debug=True) - [0] https://bottlepy.org/docs/dev/ https://bottlepy.org/docs/dev/ - [1] https://dataset.readthedocs.io/en/latest/ https://dataset.readthedocs.io/en/latest/ - [3] https://docs.pipenv.org/ https://docs.pipenv.org/ Edit: formatting.
- vram22 9y agoWhere is the code that shows (in the browser) the form for add_entry()? I've used Flask, and for a task like this, you typically have to have either one method which is decorated with a route that takes a list of two method args, "get" and "post" in a list, and then have an if statement to distinguish between code to display the form (get code) and code to process the data on submit (post code), or two separate methods, which could be called get and post or get_entry and post_entry. But your get method does not show a form; it displays all the entries.
- thinkxl 9y agoIn that example I put the form on the '/' route. Here is a GitHub repo with the code: https://github.com/thinkxl/hn-bottle-example https://github.com/thinkxl/hn-bottle-example And here is a gif showing how it works: https://dsh.re/364b2 https://dsh.re/364b2 Edit: Words.
- vram22 9y agoOkay, will check those out, thanks.
- ryanchants 9y agoI'm currently working on a web2py app that I'm working to convert to Django.
- cpburns2009 9y agoFor websites and internal web applications I use the following. Framework: - A bastardized modification of Django (bad choice, but I'm stuck with it). I'd really like to try Pyramid or Flask. - Mako for templating. Databases: - PostgreSQL for primary data storage. - Solr for full-text search. - Redis for cached data. Servers: - Nginx for the front-end server. - uWSGI for the application server (bridge between Nginx and Django). I'd like to try Nginx Unit. Browser-side: - jQuery for functionality. - Bootstrap for base styles.
- thinkxl 9y agoFlask is really cool. It has a great community and a package for everything you'd need.
- odonnellryan 9y agoI use Flask in most of my projects, the source is very fun to read.
- pkaura 9y agoDjango, DRF(usual suspects), django-silk from profiling API's. Pycharm is my IDE of choice.
- deleted 9y ago[deleted]
- siquick 9y agoFlask if building APIs, Django if building CRUD sites. I write all my database commands in raw SQL rather than using an ORM, primarily because it's far quicker for me to write slightly more complex SQL than manipulate objects.
- potta_coffee 9y agoI'm a big fan of Flask. For more performance oriented projects I'm dabbling with Go, going to attempt a non-trivial project with it soon.
- aprdm 9y agoflask via flask_restplus SQLAlchemy for ORM PostgreSQL/Redis/Elasticsearch for storage
- tobaschco 9y agoDjango all the way. Use the built-in admin functionality for easy CRUD, and add the django-rest-framework plugin for a full REST api as well.
- rsinger87 9y agoDjango with Django REST Framework. Postgres for DB, Redis for caching. RQ/Django RQ for background tasks. OpenAPI for API documentation.