说,我有一个带照片库的页面.每个缩略图都有例如照片,国家,作者等.我使用模板标签(加载指定的模板)渲染这些项目/小部件 - 由于DRY(我在页面上的不同位置单独使用这些项目/小部件),它就是这样.
它很慢.
我使用django-debug-toolbar执行了一些分析:
SQL Queries: default 84.81 ms (147 queries)
Run Code Online (Sandbox Code Playgroud)
但:
Total CPU time: 5768.360 msec
Run Code Online (Sandbox Code Playgroud)
等待的时间太长了.
经过一番分析后发现,主要罪魁祸首是模板化.
当我想显示例如150张照片时,通过模板呈现600个相关项目/小部件.这意味着600次I/O操作甚至更多.将这些小部件移动到主模板可以解决问题,但不会保留DRY.
所以我的问题是如何避免这种行为?干,慢,干,快?我宁愿干得快......
假设我有一个上下文处理器:
def title(request):
return {'titles': 'mytitle'}
Run Code Online (Sandbox Code Playgroud)
我可以在模板中访问此变量{{ titles }}.
但是我怎么能在视野中这样做呢?
def myview(request):
print request.titles
Run Code Online (Sandbox Code Playgroud)
似乎不起作用 - 'WSGIRequest' object has no attribute 'titles'
或者可能有更好的方法(比上下文处理器)在视图和模板中都可以访问全局变量?
提前致谢.
假设我们有一个具有两个自递归关系的模型:
class Article(Item): # Item in this case is an abstract class
date = models.DateField()
parent = models.OneToOneField('self', null=True, blank=True)
subatricles = models.ForeignKey('self', null=True, blank=True, related_name='subs')
Run Code Online (Sandbox Code Playgroud)
文章在这里作为节点 - 它可以有许多孩子(如果提供)和一个父母(如果有的话).但是,当我在Django的管理员中注册我的模型时,我的子系统被显示为"一对一" - 在这两种情况下都有选择框,但在后者中,不能选择多个值.
如何通过管理窗格将子项添加到此Article对象,然后列出它们?
我想拥有的是:
而不是正常的下拉.
谢谢.