통합 한 Viewflow - https://github.com/viewflow/viewflow을 사용하는 장고 1.11 프로젝트가 있습니다. 매우 도움이되었지만, 많은 것들이 "마법"의 일종이며, 처음으로 진고한 Django 프로젝트가되어서, 해결 방법이나 최선의 방법에 대한 확신이없는 문제가 발생했습니다.사용자 정의 컨텍스트로 장고보기 덮어 쓰기 (Django 1.11, Viewflow)
문맥이 많이 필요한 일반적인 템플릿이 있습니다. 나는 나의 모든보기에이 컨텍스트를 추가하는 기능을 가지고 :
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
문맥에 덮어 쓰기/추가하는 것이 거의 없지만 아무 것도 작동하지 않는 것 같습니다.
시도 1 : URL을 덮어 쓰기 및 extra_context 사용
(SO이 제안) - 문제는 URL이 "마법"이라는 것이다, 내 urlpatterns은 매우 간단하다 :
from material.frontend import urls as frontend_urls
urlpatterns = [
url(r'^MOC/', include('MOC.urls')),
url(r'', include(frontend_urls)),
]
이 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
이것은 내 views.py에 있습니다 - 그러나 단순히 실행되지 않습니다. 아마도 뭔가를 놓친 것 같아요. 실제로 강제로 사용하는 방법을 알아낼 수 없습니다. 내보기 대신 viewflow에 내장 된보기.
Viewflow의 템플릿을 문제없이 덮어 쓰지 만, 다른 것을 덮어 쓰는 것은 저 밖에 있습니다. 어떤 제안?