2013-06-13 3 views
0

첫 번째 장고 앱을 쓰고 있는데 문제가 있습니다. 이것은 내 sitiuation입니다 :django 양식에서 변수 전달하기

나는 여러 가지 방법으로 트랙을 분할하고 양식을 가진 HTML 페이지에 모든 것을 보여줄 필요가 있습니다. 사용자는 트랙의이 부분에 대한 양식을 작성해야하며 완료 될 때까지 다음 양식을 다시 표시해야합니다. 루프를 수행하는 방법을 모르지만이 문제를 해결하기 위해 GET 상황에서 필요한 변수를 POST에 전달하는 방법을 모르겠습니다. 당신의 도움에 대한

def acoplar_track(request, track_id,):    
    if request.method=='POST': 
     formulari = WayForm(request.POST, request.FILES) 
     if formulari.is_valid(): 
      x.addFeatures(newWays_l[cont], formulari.descripcio, formulari.tipus)  
      x.saveCityToFile('/var/www/tottrack/media/zones/city/'+track.zona.nom)     

      if cont+1==len(newWays_l): 
       return render_to_response('principal/inici.html', context_instance=RequestContext(request)) 
      else: 
       cont = cont+1   
       formulari = WayForm() 
       lon, lat, zoom = x.getWayMapSettings(newWays_l[cont]) #variables to show the map 

       return render(request,'principal/wayForm.html', 
       {'formulari':formulari, 'lat':lat, 'lon':lon, 'zoom':zoom}) 


    else: 
     track = get_object_or_404(Track, id=track_id) # obte el track i la zona corresponent al track 

     x=Xarxa('/var/www/tottrack/media/zones/city/'+track.zona.nom) # crea una Track() mitjansant el fitxer on s'ha guardat la zona per poder acoplar-hi les noves dades 
     nomTrack = track.track.name.split('/')[-1:] # aconsegueix nomes el nom del fitxer, sense /tracks/gpx/ 
     x.setZoneBB(track.zona.latSud, track.zona.lonOest, track.zona.latNord, track.zona.lonEst) 
     x.uploadTrack(nomTrack[0]) # fusiona el track a la city 
     newWays_l = x.getTrackWays() # obte les ids dels nous camins que s'afegiran 

     if not newWays_l: 
      return render_to_response('acoplarTrackRepetit.html') 
     else: 
      cont = 0   
      formulari = WayForm() 
      lon, lat, zoom = x.getWayMapSettings(newWays_l[0]) #variables to show the map 

      return render(request,'principal/wayForm.html', 
      {'formulari':formulari, 'lat':lat, 'lon':lon, 'zoom':zoom}) 

forms.py

CHOICES = (('1','Pista',),('2','Corriol',))    
class WayForm(forms.Form): 
    descripcio = forms.Textarea() 
    tipus = forms.ChoiceField(widget=forms.RadioSelect, choices=CHOICES) 

감사합니다!

답변

1

request.method == POST 앞에 GET 메소드의 코드를 넣으십시오. 이런 식으로 뭔가 :

def acoplar_track(request, track_id,): 

//Code for GET here 

if request.method == POST: 

    //Code for POST here 

//return render GET method 
+0

작동하지 않습니다. 나는 그것을 실행할 수 있지만 첫 번째 양식을 처리 할 때 변수가 초기화되지 않는다는 오류가 발생합니다 ... – user2170928

+0

GET 코드 부분에서 변수를 초기화하기 만하면됩니다. formulari = WayForm() – Iradiel90

0

제가 이해하도록하기 위해, 귀하의 질문을 바꿔 보자

당신은 모델을 저장하기 전에, 여러 페이지/양식을 통해 몇 가지 정보를 수집합니다. 당신은 모든 정보를 저장하는 데 필요한 때까지,

https://docs.djangoproject.com/en/1.5/ref/contrib/formtools/form-wizard/

기본적으로 이전 페이지에서 수집 한 정보가 실제로 데이터베이스에 있지만 다른 위치에 저장됩니다

여기 문서에 덮여 관심있는 모델입니다. 그런 다음 모델을 저장하고 캐시 된 응답을 모두 삭제할 수 있습니다.