如何将变量从'string'类型转换为Django中的类型'views'?

时间:2015-10-08 12:31:10

标签: python django

views.py:

def handbook_cpu_add(request):
    ...

models.py:

class CPU(models.Model):
    name = models.CharField(max_length=100)

    def __unicode__(self):
        return self.name

test.py:

def test_add_comparison_url(self):
    helper.handbook_add_comparison_url(self, 'cpu')

helper.py:

def handbook_add_comparison_url(self, item):
    found = resolve('/hardware/handbook/' + item + '/add/')
    t = 'handbook_' + item + '_add'

    self.assertEqual(found.func, t)

如何将变量't'从'string'类型转换为'handbook_cpu_add'类型?

2 个答案:

答案 0 :(得分:3)

你正在考虑这个问题。您不需要将字符串转换为函数或视图,您只需从函数中获取名称并将其与您的字符串进行比较:

self.assertEqual(found.func.__name__, t)

答案 1 :(得分:0)

回答您的原始问题,getattr正是您所寻找的:

import views


view = getattr(views, 'name')

但是,考虑将@ Duncan的答案用于此类目的。