A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing...

49
A Sample Approach to your Project Python 3 :: Flask :: SQLite3 Doug McGeehan An object-oriented interpreted programming language A micro web framework written in Python A public domain, barebones SQL database system

Transcript of A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing...

Page 1: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

A Sample Approachto your ProjectPython 3 :: Flask :: SQLite3

Doug McGeehan

An object-orientedinterpreted programming

language

A micro web framework written in Python

A public domain, barebones SQL database system

Page 2: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

Your Development Environment

Windows Client

PuTTYXming

Linux Server

Python 3pip

virtualenv

S&T CLC Machines

Pre-installed in CLCs

Page 3: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

Outline

1. Fire up Xming server2. PuTTY w/ X forwarding3. Connect to CLC Linux4. Firefox: test X forwarding5. mkdir: A Blank Canvas6. Python virtualenv

7. Installing Flask8. Flask: Hello World!9. Your Own Flask Server

10. Flask: Jinja2 Templating11. Flask: HTML forms &

HTTP requests12. Beginner’s SQLite

Page 4: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

1. Fire up Xming server

● Start menu● Type “xming”● Find it● Execute program● Nothing happens,

but it should be running

Page 5: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

2. PuTTY w/ X forwarding

● Start menu● Type “putty”● Find it● Open program● Category >>

Connection >>SSH >> X11

● Verify box is ticked

Page 6: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

3. Connecting to a CLC Linux Machine

● Select a serverrcNNxcs213.managed.mst.edu

01 <= NN <= 40https://it.mst.edu/services/linux/hostnames/

● Verify X fowarding enabled● Press Open (or Enter)● Username + Password

Page 7: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

3. Connecting to a CLC Linux Machine

● Select a serverrcNNxcs213.managed.mst.edu

01 <= NN <= 40https://it.mst.edu/services/linux/hostnames/

● Verify X fowarding enabled● Press Open (or Enter)● Username + Password

Page 8: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

4. Testing X forwarding with Firefox

Let’s test X fowarding is working.

djmvfb@rc05xcs213:~$

Whatever precedes $ is your current working directory

~ is your home directory

Page 9: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

4. Testing X forwarding with Firefox

Let’s test X fowarding is working.

djmvfb@rc05xcs213:~$ firefox &

Execute this command and immediate go into the background.

Benefit: no second PuTTY window

Page 10: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

4. Testing X forwarding with Firefox

Let’s test X fowarding is working.

djmvfb@rc05xcs213:~$ firefox &

Execute this command and immediate go into the background.

Benefit: no second PuTTY windowXming

Page 11: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

5. mkdir: A Blank Canvas for your Project

djmvfb@rc05xcs213:~$ mkdir cs2300proj

Make a directory (folder) for your project

Page 12: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

5. mkdir: A Blank Canvas for your Project

djmvfb@rc05xcs213:~$ mkdir cs2300proj

djmvfb@rc05xcs213:~$ cd cs2300proj/

Navigate into said directory

Page 13: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

5. mkdir: A Blank Canvas for your Project

djmvfb@rc05xcs213:~$ mkdir cs2300proj

djmvfb@rc05xcs213:~$ cd cs2300proj/

djmvfb@rc05xcs213:~/cs2300proj$

~/cs2300proj is now your current working directory

Page 14: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

6. Python virtualenv: Your Development Sandbox

~/cs2300proj$ virtualenv -p python3 venv

New python executable in /mnt/dfs/djmvfb/Users/

djmvfb/linuxhome/cs2300proj/venv/bin/python

Installing setuptools, pip, wheel...done.

~/cs2300proj$ source venv/bin/activate

(venv) ~/cs2300proj$

Page 15: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

6. Python virtualenv: Your Development Sandbox

~/cs2300proj$ source venv/bin/activate

(venv) ~/cs2300proj$

Remember this command and the (venv) prefix.You must be in that directory to execute it.

Page 16: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

7. Installing Flask: a Python micro web framework

(venv) ~/cs2300proj$ pip install flask

● Installs flask in your virtual environment● Does not install globally on the server● Benefit: no administrative privileges needed

install libraries of different versions than thosealready on the system

Page 17: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

8. Flask: Hello World!

● Fire up your favorite editor○ Protip: learn VIM

run.sh:Don’t just copy this and paste this.

export FLASK_APP=webpage.py

export FLASK_DEBUG=1

flask run -h localhost -p 8000

Bash shell environment variables

Page 18: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

8. Flask: Hello World!

● Fire up your favorite editor○ Protip: learn VIM webpage.py:

from flask import Flask

app = Flask(__name__)Don’t just copy this and paste this.

@app.route('/')

def hello_world():

return 'Hello, World!'

run.sh:Don’t just copy this and paste this.

export FLASK_APP=webpage.py

export FLASK_DEBUG=1

flask run -h localhost -p 8000

Python library import

Page 19: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

8. Flask: Hello World!

● Fire up your favorite editor○ Protip: learn VIM

run.sh:Don’t just copy this and paste this.

export FLASK_APP=webpage.py

export FLASK_DEBUG=1

flask run -h localhost -p 8000

webpage.py:

from flask import Flask

app = Flask(__name__)Don’t just copy this and paste this.

@app.route('/')

def hello_world():

return 'Hello, World!'

Python decorator*

*Advanced Python entity, kind of difficult to custom use for beginners.

Page 20: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

run.sh:Don’t just copy this and paste this.

export FLASK_APP=webpage.py

export FLASK_DEBUG=1

flask run -h localhost -p 8000

8. Flask: Hello World!

● Fire up your favorite editor○ Protip: learn VIM webpage.py:

from flask import Flask

app = Flask(__name__)Don’t just copy this and paste this.

@app.route('/')

def hello_world():

return 'Hello, World!'

Function definition

Page 21: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

run.sh:Don’t just copy this and paste this.

export FLASK_APP=webpage.py

export FLASK_DEBUG=1

flask run -h localhost -p 8000

8. Flask: Hello World!

● Fire up your favorite editor○ Protip: learn VIM webpage.py:

from flask import Flask

app = Flask(__name__)Don’t just copy this and paste this.

@app.route('/')

def hello_world():

return 'Hello, World!'Required indentation*

*Tabs or spaces. Recommended: 4 spaces.

Page 22: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

9. Your Own Flask Server

(venv) ~/cs2300proj$ chmod +x run.sh

Changes the run.sh file to be executable in Linux

Page 23: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

9. Your Own Flask Server

(venv) ~/cs2300proj$ chmod +x run.sh

(venv) ~/cs2300proj$ ./run.sh

Execute the run.sh file that exists in the current working directory

Page 24: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

9. Your Own Flask Server

(venv) ~/cs2300proj$ chmod +x run.sh

(venv) ~/cs2300proj$ ./run.sh * Serving Flask app "webpage"

* Forcing debug mode on

* Running on http://localhost:8000/ (Press CTRL+C to quit)

* Restarting with stat

* Debugger is active!

* Debugger PIN: 114-080-928

Only accessible through the local hosti.e. from applications running on the Linux box.

Page 25: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

9. Your Own Flask Server

(venv) ~/cs2300proj$ chmod +x run.sh

(venv) ~/cs2300proj$ ./run.sh * Serving Flask app "webpage"

* Forcing debug mode on

* Running on http://localhost:8000/ (Press CTRL+C to quit)

* Restarting with stat

* Debugger is active!

* Debugger PIN: 114-080-928

Only accessible through the local hosti.e. from applications running on the Linux box.

Page 26: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

10. Flask + Jinja2 templates: Dynamic Webpages

(venv) ~/cs2300proj$ mkdir templates

Make a directory (folder) in the current working directory named templates

Page 27: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

10. Flask + Jinja2 templates: Dynamic Webpages

(venv) ~/cs2300proj$ mkdir templates

(venv) ~/cs2300proj$ mkdir static

(venv) ~/cs2300proj$ ls

List the contents of the current workingdirectory

Page 28: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

10. Flask + Jinja2 templates: Dynamic Webpages

(venv) ~/cs2300proj$ mkdir templates

(venv) ~/cs2300proj$ mkdir static

(venv) ~/cs2300proj$ ls

__pycache__ run.sh static templates venv webpage.py

Static files: JavaScript,

CSS, Images

Jinja2 templates:HTML files

Page 29: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

10. Flask + Jinja2 templates: Dynamic Webpages

templates/index.html:

<html lang="en">

<head>

<title>Something Meaningful</title>

<meta charset="utf-8" />

</head>

Don’t just copy this and paste this.

<body>

<header><h1>{{ header }}</h1></header>

</body>

</html>

webpage.py:

Jinja2 template syntaxfor variable insertion

Page 30: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

10. Flask + Jinja2 templates: Dynamic Webpages

templates/index.html:

<html lang="en">

<head>

<title>Something Meaningful</title>

<meta charset="utf-8" />

</head>

Don’t just copy this and paste this.

<body>

<header><h1>{{ header }}</h1></header>

</body>

</html>

webpage.py:

from flask import Flask

from flask import render_template

Don’t just copy this and paste this.

app = Flask(__name__)

@app.route('/')

def doesnt_matter_what_you_name_this():

return render_template(

'index.html',

header='Demo for CS2300'

)

Page 31: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

webpage.py:

from flask import Flask

from flask import render_template

Don’t just copy this and paste this.

app = Flask(__name__)

@app.route('/')

def doesnt_matter_what_you_name_this():

return render_template(

'index.html',

header='Demo for CS2300'

)

templates/index.html:

<html lang="en">

<head>

<title>Something Meaningful</title>

<meta charset="utf-8" />

</head>

Don’t just copy this and paste this.

<body>

<header><h1>{{ header }}</h1></header>

</body>

</html>

10. Flask + Jinja2 templates: Dynamic Webpages

Page 32: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

If statement:

{% if True %}

{{ variable }}

{% endif %}

10. Flask + Jinja2 templates: Dynamic Webpages

For loop:

<ul>

{% for item in list %}

<li>{{ item }}</li>

{% endfor %}

</ul>

Page 33: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

11. Flask: HTML forms and HTTP requests

If header variable is definedwhen rendering template, includethis HTML code

Insert the URL for the insertfunction.

When submit button is pressed,use HTTP POST to send form datato the action URL

templates/index.html:...

<body>

{% if header %}

<header><h1>{{ header }}</h1></header>

{% endif %}

<form action="{{ url_for(‘insert’) }}"

method="post">

Something: <input type="text"

name="form-field">

<input type="submit" value="Submit">

</form>

</body>

Page 34: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

11. Flask: HTML forms and HTTP requests

webpage.py:...

@app.route('/')

def index():

return render_template(

'index.html',

header='Demo for CS2300'

)

@app.route('/submit', methods=['POST'])

def insert():

# more code to come

return render_template('index.html')

templates/index.html:...

<body>

{% if header %}

<header><h1>{{ header }}</h1></header>

{% endif %}

<form action="{{ url_for(‘insert’) }}"

method="post">

Something: <input type="text"

name="form-field">

<input type="submit" value="Submit">

</form>

</body>

Page 35: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

webpage.py:...

@app.route('/')

def index():

return render_template(

'index.html',

header='Demo for CS2300'

)

@app.route('/submit', methods=['POST'])

def insert():

# more code to come

return render_template('index.html')

templates/index.html:...

<body>

{% if header %}

<header><h1>{{ header }}</h1></header>

{% endif %}

<form action="{{ url_for(‘insert’) }}"

method="post">

Something: <input type="text"

name="form-field">

<input type="submit" value="Submit">

</form>

</body>

11. Flask: HTML forms and HTTP requests

Page 36: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

11. Flask: HTML forms and HTTP requests

webpage.py:

...

from flask import request

@app.route('/submit', methods=['POST'])

def insert():

field = request.form['form-field']

return render_template(

'index.html',

header=field

)

templates/index.html:

...

<body>

<header><h1>{{ header }}</h1></header>

<form action="{{ url_for(‘insert’) }}"

method="post">

Something: <input type="text"

name="form-field">

<input type="submit" value="Submit">

</form>

</body>

</html>

Page 37: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

11. Flask: HTML forms and HTTP requests

webpage.py:

...

from flask import request

@app.route('/submit', methods=['POST'])

def insert():

field = request.form['form-field']

return render_template(

'index.html',

header=field

)

templates/index.html:

...

<body>

<header><h1>{{ header }}</h1></header>

<form action="{{ url_for(‘insert’) }}"

method="post">

Something: <input type="text"

name="form-field">

<input type="submit" value="Submit">

</form>

</body>

</html>

Page 38: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

12. Beginner’s SQLite

import sqlite3

connection = sqlite3.connect(‘database.db’)

cursor = connection.curser()

...

...

...

connection.commit()

cursor.close()

Page 39: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

12. Beginner’s SQLite :: Create Table

cursor = connection.curser()

cursor.execute("""

CREATE TABLE Stuff (

form_fields VARCHAR(120)

)

""")

connection.commit()

Page 40: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

12. Beginner’s SQLite :: Insert Values

cursor = connection.curser()

cursor.execute(

'INSERT INTO Stuff VALUES (:val)',

{'val': 'something'}

)

connection.commit()

Page 41: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

12. Beginner’s SQLite :: Query for Values

cursor = connection.curser()

result = cursor.execute("""

SELECT * FROM Stuff

""").fetchone()

result == (‘something’,)

Page 42: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

12. Beginner’s SQLite :: Back to Flask

webpage.py (cont):

db_contents = cursor.execute(

'SELECT * FROM Stuff'

).fetchall()

return render_template(

'index.html',

list_of_stuff=db_contents,

header='New Stuff'

)

webpage.py:import sqlite3

connection = sqlite3.connect(‘data.db’)

from flask import request

@app.route('/submit', methods=['POST'])

def insert():

field = request.form['form-field']

cursor = connection.cursor()

cursor.execute(

'INSERT INTO Stuff VALUES (:val)',

{'val': field}

)

connection.commit()

Page 43: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

12. Beginner’s SQLite :: Back to Flask

webpage.py (cont):

db_contents = cursor.execute(

'SELECT * FROM Stuff'

).fetchall()

return render_template(

'index.html',

list_of_stuff=db_contents,

header='New Stuff'

)

index.html:

...

{% if list_of_stuff %}

<div>

<ul>

{% for (val,) in list_of_stuff %}

<li>{{ val }}</li>

{% endfor %}

</ul>

</div>

{% endif %}

...

Page 44: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

12. Beginner’s SQLite :: Back to Flask

webpage.py (cont):

db_contents = cursor.execute(

'SELECT * FROM Stuff'

).fetchall()

return render_template(

'index.html',

list_of_stuff=db_contents,

header='New Stuff'

)

index.html:

...

{% if list_of_stuff %}

<div>

<ul>

{% for (val,) in list_of_stuff %}

<li>{{ val }}</li>

{% endfor %}

</ul>

</div>

{% endif %}

...

Page 45: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

12. Beginner’s SQLite :: Back to Flask

webpage.py (cont):

db_contents = cursor.execute(

'SELECT * FROM Stuff'

).fetchall()

return render_template(

'index.html',

list_of_stuff=db_contents,

header='New Stuff'

)

index.html:

...

{% if list_of_stuff %}

<div>

<ul>

{% for (val,) in list_of_stuff %}

<li>{{ val }}</li>

{% endfor %}

</ul>

</div>

{% endif %}

...

Page 46: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

12. Beginner’s SQLite :: Back to Flask

webpage.py (cont):

db_contents = cursor.execute(

'SELECT * FROM Stuff'

).fetchall()

return render_template(

'index.html',

list_of_stuff=db_contents,

header='New Stuff'

)

index.html:

...

{% if list_of_stuff %}

<div>

<ul>

{% for (val,) in list_of_stuff %}

<li>{{ val }}</li>

{% endfor %}

</ul>

</div>

{% endif %}

...

Page 47: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

That’s it.

● Python / Flask / SQLite aren’t required for your projects

● Everything beyond this lecture is up toyour own learning

Page 48: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

Further Reading

● Flask tutorial:http://flask.pocoo.org/docs/1.0/tutorial/

● SQLite tutorial:http://www.sqlitetutorial.net/

● Jinja2 tutorial:https://realpython.com/blog/python/primer-on-jinja-templating/

Page 49: A Sample Approach to your Projectdjmvfb/courses/cs2300/static/media/cs2300 - … · 7.Installing Flask: a Python micro web framework (venv) ~/cs2300proj$ pip install flask Installs

Demo Code available on S&T GitLab

https://git.mst.edu/djmvfb/cs2300proj

djmvfb@rc05xcs213:~$ git clone https://git.mst.edu/djmvfb/cs2300proj.git