鉴于我有一个模块的代码对象,我如何获得相应的模块对象?
它看起来像是moduleNames = {}; exec code in moduleNames非常接近我想要的东西.它将模块中声明的全局变量返回到字典中.但是,如果我想要实际的模块对象,我该如何获得它?
编辑:看起来你可以滚动自己的模块对象.模块类型不方便记录,但您可以执行以下操作:
import sys
module = sys.__class__
del sys
foo = module('foo', 'Doc string')
foo.__file__ = 'foo.pyc'
exec code in foo.__dict__
Run Code Online (Sandbox Code Playgroud) 刚刚完成一些CBV的工作,并想知道这是不好的风格.通常,您views.py在urls.py该视图中有一个类,在该视图中有一个URL .就像是:
views.py
from django.views.generic.list import ListView
from project.models import Contact
class ContactList(ListView):
model = Contact
Run Code Online (Sandbox Code Playgroud)
urls.py
from django.views.generic.list import ListView
from project.views import ContactList
urlpatterns = [
url(r'contacts/$', ContactList.as_view()),
]
Run Code Online (Sandbox Code Playgroud)
然后是一个显示数据的模板.
但是,如何完全跳过视图代码并在urls.py文件中完成所有操作:
from django.views.generic.list import ListView
from project.models import Contact
urlpatterns = [
url(r'contacts/$', ListView.as_view(model=Contact)),
]
Run Code Online (Sandbox Code Playgroud)
将它全部分组到urls.py文件中的样式是不是很糟糕?我的意思是,它摆脱了多余的代码,views.py所以不是那么好吗?或者这是以牺牲清晰度为代价的减少?