mirror of https://github.com/mitsuhiko/flask.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.4 KiB
70 lines
2.4 KiB
15 years ago
|
Step 2: Application Setup Code
|
||
|
==============================
|
||
|
|
||
|
Now that we have the schema in place we can create the application module.
|
||
|
Let's call it `flaskr.py` inside the `flaskr` folder. For starters we
|
||
|
will add the imports we will need as well as the config section. For
|
||
|
small applications it's a possibility to drop the configuration directly
|
||
|
into the module which we will be doing here. However a cleaner solution
|
||
|
would be to create a separate `.ini` or `.py` file and load that or import
|
||
|
the values from there.
|
||
|
|
||
|
::
|
||
|
|
||
|
# all the imports
|
||
|
import sqlite3
|
||
|
from flask import Flask, request, session, g, redirect, url_for, \
|
||
|
abort, render_template, flash
|
||
|
|
||
|
# configuration
|
||
|
DATABASE = '/tmp/flaskr.db'
|
||
|
DEBUG = True
|
||
|
SECRET_KEY = 'development key'
|
||
|
USERNAME = 'admin'
|
||
|
PASSWORD = 'default'
|
||
|
|
||
|
Next we can create our actual application and initialize it with the
|
||
|
config::
|
||
|
|
||
|
# create our little application :)
|
||
|
app = Flask(__name__)
|
||
|
app.secret_key = SECRET_KEY
|
||
|
app.debug = DEBUG
|
||
|
|
||
|
The `secret_key` is needed to keep the client-side sessions secure.
|
||
|
Choose that key wisely and as hard to guess and complex as possible. The
|
||
|
debug flag enables or disables the interactive debugger. Never leave
|
||
|
debug mode activated in a production system because it will allow users to
|
||
|
executed code on the server!
|
||
|
|
||
|
We also add a method to easily connect to the database specified. That
|
||
|
can be used to open a connection on request and also from the interactive
|
||
|
Python shell or a script. This will come in handy later
|
||
|
|
||
|
::
|
||
|
|
||
|
def connect_db():
|
||
|
return sqlite3.connect(DATABASE)
|
||
|
|
||
|
Finally we just add a line to the bottom of the file that fires up the
|
||
|
server if we run that file as standalone application::
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
app.run()
|
||
|
|
||
|
With that out of the way you should be able to start up the application
|
||
|
without problems. When you head over to the server you will get an 404
|
||
|
page not found error because we don't have any views yet. But we will
|
||
|
focus on that a little later. First we should get the database working.
|
||
|
|
||
|
.. admonition:: Troubleshooting
|
||
|
|
||
|
If you notice later that the browser cannot connect to the server
|
||
|
during development, you might want to try this line instead::
|
||
|
|
||
|
app.run(host='127.0.0.1')
|
||
|
|
||
|
In a nutshell: Werkzeug starts up as IPv6 on many operating systems by
|
||
|
default and not every browser is happy with that. This forces IPv4
|
||
|
usage.
|