Sometimes using a profile object isn't quite enough to do what you need to do. Learn what it takes to use Django's builtin mechanism for doing a custom user model, and still be able to do what you need to do.
Adding profile data to a user object isn't really obvious because the User model is stuck behind the contrib.Auth app. However, it is simple once you know how to do it. In this video see how to add a profile and a little bit of the pitfalls you can run into with it.
Security is something we often ignore until it is too late. However, there are some things you can do right now that are easy to increase your security. Using django-admin-honeypot is one of those things you can do. It is super easy and provides you with the means of tracking who is trying to access your site.
Working with AWS S3 can be a pain, but boto3 makes it simpler. Take the next step of using boto3 effectively and learn how to do the basic things you would want to do with s3. Especially generating that pesky temporary url.
Working with AWS is kind of rough. There is so much that you can do with it using their API you can kind of get lost. Fortunately, the boto3 library offers a way to use their API in an organized fashion. For this first video you can get an idea of how things are organized so you can get started working with AWS in python.
Doing django development using "Bash for Windows" seems to work pretty well. See what it takes to set it up and get started.
Sometimes when you authenticate with a social service you need to do custom "stuff" in your code base beyond creating a user object. Learn how to get started simply adding a custom function do the python-social-auth pipeline.
Accessing social networks via API is a pain because you have to start with logging into them. Fortuantely, python-social-auth makes this easier, really easy. Learn how to setup python-social-auth so you can log into social sites. Also explore the numerous social logins that are available. python-social-auth has more than any other library.