如何根据url参数导入不同的模型

时间:2016-12-26 12:28:10

标签: python-3.x django-models

我正在编写一个网站,需要根据参数将不同的sql模型导入不同的URL。具体来说:

如果网址是:

http://127.0.0.1:8000/detail/abc

其中abc也是sql数据库中的模型名称

然后在views.py中:

def detail(request, arg):
  from book.models import arg

我的预期结果是:

  from book.models import abc

任何想法?非常感谢。

3 个答案:

答案 0 :(得分:0)

你可以像这样动态导入:

request = "test.com/t/winsound"
importValue = request.rsplit("/",1)[1]
exec("import "+importValue)
winsound.Beep(600,600)

答案 1 :(得分:0)

您可以使用getattr()

在你的情况下:

def detail(request, arg):
    import books.models as books_models
    function = getattr(books_models, arg)

另一种方法是:

function = getattr(__import__('books.models'), arg)

答案 2 :(得分:0)

感谢大家的投入。虽然你的答案应该是有效的,但我也找到了一种方法,如下所示:

from django.apps import apps

def detail(request, arg):
    db_arg = apps.get_model('book', arg)

然后将abc数据库分配给db_arg

我认为这个问题与此问题重复: What is the equivalent of django.db.models.loading.get_model() in Django 1.9?