Search code examples
pythonflask

python-How to set global variables in Flask?


I'm working on a Flask project and I want to have my index load more contents when scroll. I want to set a global variable to save how many times have the page loaded. My project is structured as :

├──run.py
└──app
   ├──templates
   ├──_init_.py
   ├──views.py
   └──models.py

At first, I declare the global variable in _init_.py:

global index_add_counter

and Pycharm warned Global variable 'index_add_counter' is undefined at the module level

In views.py:

from app import app,db,index_add_counter

and there's ImportError: cannot import name index_add_counter

I've also referenced global-variable-and-python-flask But I don't have a main() function. What is the right way to set global variable in Flask?


Solution

  • With:

    global index_add_counter
    

    You are not defining, just declaring. So it's like saying "there is a global index_add_counter variable elsewhere," and not "create a global called index_add_counter". As your name doesn't exist, Python is telling you it can not import that name. So you need to simply remove the global keyword and initialize your variable:

    index_add_counter = 0
    

    Now you can import it with:

    from app import index_add_counter
    

    The construction:

    global index_add_counter
    

    is used inside modules' definitions to force the interpreter to look for that name in the modules' scope, not in the definition one:

    index_add_counter = 0
    def test():
      global index_add_counter # means: in this scope, use the global name
      print(index_add_counter)