我正在编写一个网站,需要根据参数将不同的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
任何想法?非常感谢。
答案 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?