Chapter 10. User Profiles
In this chapter, user profiles for Flasky are implemented. All socially aware sites give their users a profile page, where a summary of the user’s participation in the website is presented. Users can advertise their presence on the website by sharing the URL to their profile page, so it is important that the URLs be short and easy to remember.
Profile Information
To make user profile pages more interesting, some additional information about users can be stored in the database. In Example 10-1 the User
model is extended with several new fields.
Example 10-1. app/models.py: user information fields
class
User
(
UserMixin
,
db
.
Model
):
# ...
name
=
db
.
Column
(
db
.
String
(
64
))
location
=
db
.
Column
(
db
.
String
(
64
))
about_me
=
db
.
Column
(
db
.
Text
())
member_since
=
db
.
Column
(
db
.
DateTime
(),
default
=
datetime
.
utcnow
)
last_seen
=
db
.
Column
(
db
.
DateTime
(),
default
=
datetime
.
utcnow
)
The new fields store the user’s real name, location, self-written bio, date of registration, and date of last visit. The about_me
field is assigned the type db.Text()
. The difference between db.String
and db.Text
is that db.Text
is a variable-length field and as such does not need a maximum length.
The two timestamps are given a default value of the current time. Note that the datetime.utcnow
is missing the ()
at the end. This is because the default
argument in db.Column()
can take a function as a value. Each time a default value needs to be generated, SQLAlchemy invokes the function to produce it. ...
Get Flask Web Development, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.