Loaders¶
This module provides a few simple utility functions for loading classes from
strings like myproject.models.FooBar
.
load_member_from_setting¶
Use this function to load a member from a setting:
# in your settings.py:
FOOBAR_CLASS = 'myproject.models.FooBar'
# anywhere in your code:
from django_libs.loaders import load_member_from_setting
cls = load_member_form_setting('FOOBAR_CLASS')
If you are using the reusable app settings pattern, you can hand in an optional
parameter which should be the app_settings
module where you define your
app’s setting’s default values:
# in your app_settings.py:
from django.conf import settings
FOOBAR_CLASS = getattr(settings, 'APPNAME_FOOBAR_CLASS', 'appname.models.FooBar')
# anywhere in your code:
from appname import app_settings
from django_libs.loaders import load_member_from_setting
cls = load_member_from_setting('FOOBAR_CLASS', app_settings)
load_member¶
This function is used by load_member_from_setting
internally. Use this
if you already have the FQN string of the member you would like to load:
# anywhere in your code:
from django_libs.loaders import load_member
cls = load_member('myproject.models.FooBar')
split_fqn¶
This function is used by load_member
internally. Use this if you want
to get the left and right side of a fully qualified name:
# anywhere in your code:
from django_libs.loaders import split_fqn
modulename, classname = split_fqn('myproject.models.FooBar')
In this example, modulename
would be myproject.models
and classname
would be FooBar
.
If you need it more dynamically, you can also pass in a function that returns a fqn string:
# anywhere in your code
from django_libs.loaders import split_fqn
def function_that_returns_fqn_string():
return 'myproject.models.FooBar'
modulename, classname = split_fqn(function_that_returns_fqn_string)