2011-08-25 5 views
0

프로젝트를 선택할 수 있도록 양식을 넣고 싶습니다.이 정보를 유지하고 사이트에서 언제든지 변경할 수 있습니다. context_processor를 사용하여이를 구현하고 세션 변수를 사용하여 정보를 유지하려고합니다.Django, 양식 및 양식 충돌로보기

그러나 문제가 발생했습니다. 양식은 다른 모든 템플리트에 포함 된 기본 템플리트에 포함됩니다. 일부 다른 템플릿에는 양식도 포함되어 있으며 분명히 메뉴 양식과 다른 양식 사이에 일종의 충돌이 있습니다. 예를 들어, 뷰 양식의 유효성 검사를 시도 할 때 메뉴 양식 필드가 채워지지 않았 음을 알려주므로이를 무시해야합니다.

나는 효과가없는 다른 액션 URL을 넣으려고했다.

내가 할 수있는 일이 가능한 것일까 요? 그렇다면 어떻게 충돌을 피할 수 있습니까?

메뉴의 형태는 context_processor에서 호출

함수의 코드를 호출 :

def display_select_proj(request): 
     if request.method == "POST": 
       form = SelectForm(request.POST) 
       if form.is_valid(): 
         proj = form.save() 

         request.session['proj'] = proj 

     else: 
       form = SelectForm() 
       proj = "" 

     return {'select_form': form} 

는 I 내가 {{ select_form }}

함께 표시 TEMPLATE_CONTEXT_PROCESSORS에 최종적으로 기본 템플릿에 display_select_proj 추가
+0

귀하의 질문에 혼란이 있습니다. 그러나 문제의 원인이되는 코드와보고있는 오류 메시지를 게시하는 것이 좋습니다. – Marcin

+0

질문에 약간의 코드를 추가했지만 특정 오류가 없습니다. 보기에 포함 된 양식을 채울 필요없이 내 양식의 유효성을 검사 할 수 없습니다. 메뉴를 독립적으로 만들고 싶다면 문제가 있습니다. – Johanna

+0

템플릿은 어떻게됩니까? 및 귀하의보기 코드? – Marcin

답변

1

두 가지 양식이 있으므로 어떤 양식이 실제로 제출되었는지 알려줄 수 있어야합니다. 그러면 양식 유효성 확인을 시도할지 여부를 사용자의 display_select_proj에 알릴 수 있습니다.

보통 평범한 이전 양식의 경우 제출 버튼이 있고 두 개가있는 경우 제출 버튼마다 value이 다르므로 어떤 양식이 제출되었는지 확인할 수 있습니다. 실패하면 제출 된 양식을 알려주는 숨겨진 필드를 추가해야합니다.

제출 된 양식을 결정할 수 있으면 양식을 바인딩해야하는지 또는 바인딩을 해제해야하는지 파악하기 위해 양식을 제출할 수 있습니다. 프로젝트 선택이 제출 버튼 값 "변경 프로젝트"와 "조치"라는 이름의 경우 예를 들어, 코드에서 :

def display_select_proj(request): 
    if request.method == "POST" and (request.POST.get("action", "") 
     == "Change Project"): 
     form = SelectForm(request.POST) 
     if form.is_valid(): 
      proj = form.save() 
      request.session['proj'] = proj 
    else: 
     form = SelectForm() 
     proj = "" 

    return {'select_form': form} 

모든 형태는 추가 검사가 필요합니다 것을 참고 특정 형태의 활성 여부를 확인하려면 제출되었습니다.

+0

잘 작동하는 것 같습니다. – Johanna