2015-09-04 83 views
0

從數據庫我有一個文本,它必須動態加載我的意見的類。如何動態加載一個Django類

,因爲我有此刻的例子是:

-projectname 
    -appname 
     -views.py 
     -templates 
      -appname 
       -index.html 

在views.py

class SelectCampaign(View): 

    def get(self, request, *args, **kwargs): 

     campaign = Campaign.objects.values('campaign_name').filter(user=request.user)[0] 

     #this is where I need you to automatically load with varying campaign 
     generic_class = MyClassCampaignName1() 
     #example: generic_class = class called MyClassCampaignName1 

     return generic_class.render_index(request) 

class MyClassCampaignName1(): 

    def render_index(self, request, *args, **kwargs): 
     return render(request, 'appname/index.html', {}, context_instance=RequestContext(request)) 

,帶來了數據庫動態加載類具有相同名稱的名稱

+0

我不認爲這是Django的具體。如果不是,請查看https://stackoverflow.com/questions/1176136/convert-string-to-python-class-object – Santiago

回答

0

以下是從字符串名稱中獲取對象的幾種方法。我最喜歡getattr

# outside.py 
class OuterDummy(): 
    def __init__(self): 
     print 'This is outer Dummy!' 

# main.py 
class InnerDummy(): 
    def __init__(self): 
     print 'This is inner Dummy!' 

if __name__ == "__main__": 
    # Method 1) Use the globals object 
    class_1 = globals().get('InnerDummy') 
    instance_1 = class_1() 
    # stdout: This is inner Dummy! 

    # Method 2) Use getattr 
    import outside 
    class_2 = getattr(outside, 'OuterDummy') 
    instance_2 = class_2() 
    # stdout: This is outer Dummy! 

python main.py