What you're looking for is a CI/CD pipeline. There's lots of articles around it, but the main steps would be as follows:
Some form of build artifact (it can be a docker container, but it can also be a tarball, or just code in a git repo).
Some way to automatically deploy your code. This is done by using a CI/CD tool (literally any of them will work fine, but for the love of god, don't use Jenkins, you'll thank me later).
For something as simple as how you describe your app, you can just use a CICD tool to SSH in and deploy to your existing server.
For example, CircleCI (one of my favourite tools and what we use at my current job), has a free tier that gives you 2500 minutes of build time a month. It also has an SSH orb you can include in your pipeline configuration that will SSH into your server and run a few commands to pull down the latest code and restart your server.
Here is a good Getting Started guide that should get you up and running with Circle.
If you'd like to start using docker, here is a good guide on how to run your Django app with it. From there, you would need to set up a Dockerhub account and push your docker image there, to be deployed on a server. Note you'll have to make sure you can configure your application through environment variables. It's never a good idea to have an artifact with "baked in" configuration, since this method doesn't scale in any real way.