我有一个使用Viewflow-https://github.com/viewflow/viewflow-的django1.11项目。这是非常有帮助的,但是很多东西都有点“魔力”,作为我第一个严肃的Django项目,我遇到了一个我不确定如何解决的问题,或者说是最好的方法。在
我有一个通用模板,需要很多上下文。我有一个函数可以将此上下文添加到我的所有视图中:
def add_general_context(context, MOC, MOC_enabled_fields = (), MOC_status = None):
context['MOC'] = MOC
context['current_date'] = timezone.now().strftime("%D")
context['MOC_form'] = forms.MOCForm(prefix="MOC_form", MOC_enabled_fields=MOC_enabled_fields, instance=MOC)
context['MOCAttachments'] = models.MOCAttachment.objects.filter(MOC=MOC)
context['MOCAttachment_form'] = forms.MOCAttachmentForm(prefix="MOCAttachment_form")
context['MOCApprovals'] = models.MOCApproval.objects.filter(MOC=MOC)
context['MOCTasks'] = models.MOCTask.objects.filter(MOC=MOC)
context['MOC_status'] = MOC_status
context['MOCConversation'] = models.MOCConversation.objects.filter(MOC=MOC)
# Add comments to the conversation
for conversation in context['MOCConversation']:
conversation.comments = models.MOCComment.objects.filter(conversation=conversation)
context['MOCComment_form'] = forms.MOCCommentForm(MOC=MOC)
context['MOCCommentReply_form'] = forms.MOCCommentReplyForm()
我基本上需要将这个上下文添加到viewflow内部的视图中,即AssignTaskView-https://github.com/viewflow/viewflow/blob/f50accb3cde5d53f1d4db0debf5936867712c3bd/viewflow/flow/views/task.py#L109
我尝试了一些方法来覆盖/添加上下文,但似乎都不起作用。在
尝试使用额外的URL(1)覆盖这个URL
-问题是url是“神奇的”,我的url模式非常简单:
覆盖网址本身是我无法理解的,我研究了一段时间,但它使用真正通用的函数来拉入模块等,我甚至不知道如何真正尝试。在
尝试2:覆盖视图本身和get_context_data函数
我认为这是可能的,但似乎不起作用。我的尝试与此类似(最后一次):
from viewflow.flow.views.task import AssignTaskView as CoreAssignTaskView
class AssignTaskView(CoreAssignTaskView):
def get_context_data(self, **kwargs):
context = super(AssignTaskView, self).get_context_data(**kwargs)
print("Did it work?")
return context
这是我的视图.py-然而,它根本不运行。我可能遗漏了一些东西,但我不知道如何真正地强制它使用我的视图,而不是viewflow内置的视图。在
我已经成功地覆盖了Viewflow的模板,没有问题,但是覆盖其他任何东西都是我力所不及的。有什么建议吗?在
是的,您实际上可以通过将视图url放在url_模式之上来覆盖它
但是创建一个自定义项更简单流动视图子类并设置自己的分配视图
https://github.com/viewflow/viewflow/blob/master/viewflow/flow/nodes.py#L306
^{pr2}$在flows.py公司名称:
这就是您可以重写任何内置视图的方法。在
Viewflow旨在提供代码库中的所有旋钮。您可以通过子类化流或流节点类来定制任何行为。在
自定义节点示例可能会有所帮助
https://github.com/viewflow/viewflow/blob/master/demo/customnode/nodes.py
相关问题 更多 >
编程相关推荐