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.