所以我试图动态加载模型:
urls.py
url(r'^list_view/([\w-]+)$', Generic_list.as_view()),
以下是 views.py 中的Generic_list类:
class Generic_list(ListView):
import importlib
module_name = 'models'
class_name = ?
module = __import__(module_name, globals(), locals(), class_name)
model = getattr(module, class_name)
template_name = 'django_test/generic_list.html'
关于安全性,稍后我将只允许来自白名单的课程。
那么,为了从网址获取类名,我可以用什么代替问号?
答案 0 :(得分:1)
如果您想动态加载模型,可以执行以下操作:
property
More information关于file(GLOB XIB_FILES *.xib)
set_source_files_properties(${XIB_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
。基本上,它会将此方法理解为类的属性。不必在类级别定义此属性(意味着在django导入文件时将对代码进行评估),而是使其看起来像是一个属性,但它就像一个方法,允许您添加业务逻辑。
答案 1 :(得分:1)
您可以尝试使用property
装饰器和get_model
方法:
from django.views.generic import ListView
from django.apps import apps
class GenericList(ListView):
@property
def model(self):
# Obtain model name here and pass it to `get_model` below.
return apps.get_model(app_label='app_label', model_name='model_name')
另外,请考虑阅读PEP 0008命名约定。