我怎么能用Django解析python路径字符串?

时间:2012-02-08 21:06:46

标签: python django

我正在编写Django模板模板标签,我希望能够用字符串引用其中的类,就像在settings.MIDDLEWARE_CLASSES中一样。标签看起来像{% mytag "myproject.lib.mymodule.SomeClass" %}

问题很简单:在我的模板标签中,如何轻松地将此字符串解析为实际引用的类?

感谢。

2 个答案:

答案 0 :(得分:1)

如果您确实需要导入指定为字符串的包,则需要查看__import__ function

基本用法是您可以尝试导入字符串中指定的包,如

my_class = __import__("myproject.lib.mymodule.SomeClass")

相当于

import myproject.lib.mymodule.SomeClass as my_class

然而,正如S.Lott所说,你需要仔细考虑这是否真的是解决问题的最佳方法。

答案 1 :(得分:1)

Django有一些实用功能来处理这种情况。

在Django 1.7或更高版本中,使用django.utils.module_loading.import_string函数。

在Django 1.6中,使用django.utils.module_loading.import_by_path函数。

(看起来import_by_path也存在于1.5中,虽然没有记录)

使用示例:

from django.utils.module_loading import import_string

my_class = import_string('myproject.lib.mymodule.SomeClass')