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 recorded. 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 description, 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 does not need a maximum length.

The two timestamps are given a default value of the current time. Note that datetime.utcnow is missing the () at the end. This is because the default argument to db.Column() can take a function as a default value, so each time a default value needs to be generated the function is invoked to produce it. This default value is all that is needed to manage the ...

Get Flask Web Development 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.