Welcome to the routing lab! Please read all the instructions so you don't get lost halfway through, but definitely feel free to ask for help if you get stuck. Good luck, and have fun!
Before you start coding, make sure you fork and clone the repository for this lab:
cd ~/Desktop
git clone https://github.com/YOUR_GITHUB_USERNAME/y2s19-routing.git
In app.py
, change the route for /
to display the home.html
template. You can open home.html
in Sublime to see what the template
looks like. Remember that templates are in the templates
folder!
Hint: Remember to use the function render_template
.
You can go back to the command line now and start the server, using
python app.py
. In the browser, go to http://127.0.0.1:5000
to
see what it looks like so far.
In app.py
, make a new route with two parts: the first part is
/student
and the second part will be a variable integer.
The function for this route should be called display_student(student_id)
.
When you navigate to http://127.0.0.1:5000/student/4
,
for example, the variable student_id
will be 4.
Then make the function return the rendered template 'student.html'.
This template has a variable id_number
which you should make equal
to student_id
. If you get stuck, look at the hints.
Hint: The variable student_id
should have type int
.
Hint: For the route you want something like: @app.route('/student/int:student_id')
Hint: To render the template, you can do this: render_template('student.html', id_number=student_id)
In student.html
, add a link to the home page.
Hint: Remember how to use url_for(*function name*)
, where function name is the function in app.py
that you want to route to.
Important: Work in the lab
folder!
In student.html
, add some text and the templating elements
{{ student.name }}
, {{ student.year }}
, and {{ student.finished_lab }}
.
Hint: student.name
returns the name
attribute of student
.
In app.py
, in the display_student(student_id)
function, we're going to
use student_id
to get the student object from the database. Remember that we
can use query_by_id(id)
, a function from database.py
that returns the student
object with the right id.
After getting the right student object from the database, use it as the student
parameter
to render_template()
.
Hint: Your code should look something like: render_template(*filename* id_number=student_id, student=query_by_id(student_id))
.
Refresh your webpage in the browser to make sure everything works as
expected. If there are errors and the server goes down, you can restart
the server from the command line with python app.py
again.
In static/style.css
Add your own CSS and additional templating like you've learned in the
past few days!
In home.html
, add templating code to display the name
, year
, and
finished_lab
status of each student, using {% for %}
and {% endfor %}
.
Edit the route to the home page to give render_template
of home.html
a list of
students. Hint: You'll want to use query_all()
.
In the home.html
template, add a link in the same for
loop which will
bring you to the page for each student.
Again, check that everything works in the browser. Restart your server if
it goes down again, with python app.py
.
-
Add a new page with all the students from a given year, with a home page for each year.
-
Figure out a way to add a photo to each student's page.
-
Incorporate a color scheme.