I would recommend the admin panel approach.  If you plan to launch a service online that many people can access to generate a store front, you don't want to push code changes for a simple thing like adding a feature.  That would get cumbersome and is not a good practice.  Also modifying the settings.py file would typically need to have the web service (i.e. Apache) restarted so the file is reinitialized.
With the admin panel approach, then all you have to do is look up a customer, see what features they have and check boxes.  You could make it more complex of course, especially if a new added feature is going to cost the customer more.  But simply, the admin approach is best, it gives you the flexibility and you don't have to be worried about potentially taking down the site with a code push.
Let's say I want to create a blueprint of an online store that I can sell to potential clients. However, the idea is to make it so that the client chooses features that they want their store to have (from a pre-designated list) and pay only for those features, that way avoiding paying for something they don't need.
So for example, one client wants to have and online store with a Cart, Purchase History, Graphs, Reports. Another one only wants simple registration and cart (but maybe in future they will want me to "enable" other features as well).
My question is: what, in your opinion, is the best way to tackle this problem from a Django developer perspective?
My thoughts:

Create every feature as a separate app and deploy the whole thing commenting out the features that client did not pay for. And when a client wants additional features, I simply go to settings.py and uncomment the app they requested. Can I even make changes on the settings.py file on a live website without restarting it?
Create an admin panel for myself (the superuser) that will have an ability to turn features on or off. So when the client pays for a new feature, I simply go to my admin panel and put a tick mark next to it, and voila! That way I don't have to make changes in settings.py file (and I don't need access to the hosting server, just the django admin panel). Thought I'm not sure how to do this programmatically. I think I need a separate Model with a lot of BooleanFields(?)

What are pros and cons of each approach and what other ways to achieve this can you think of?
Edit 1.
To clarify, this will not be a shopify-style service, but simply a website that I will create separately for each client. But I want to have a blueprint to quickly create one and add/remove features on the fly.
Django. General design philosophy question: best way to implement "toggleable" separate features in a website