4 ms·
Bottle[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 exam
by thinkxl 9y ago
Bottle[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.