0

私は最初の django アプリを書いていますが、困っています。これは私の状況です:

トラックをさまざまな方法で分割し、フォームを使用して html ページにすべてを表示する必要があります。ユーザーはトラックのこの部分についてフォームに入力する必要があり、フォームが終了するまでフォームで次の方法を再度表示する必要があります。そのループを実行する方法がわかりませんが、これを試してみましたが、問題は、GET 状況から POST に必要な de 変数を渡す方法がわからないことです。

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})

フォーム.py

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

ご協力いただきありがとうございます!

4

2 に答える 2

1

if 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
于 2013-06-13T14:46:21.883 に答える
0

私が理解していることを確認するために、あなたの質問を言い換えさせてください:

モデルを保存する前に、いくつかのページ/フォームから情報を収集したいと考えています。

これについては、次のドキュメントで説明されています。

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

基本的に、以前のページで収集された情報は実際にはデータベースに保存されますが、関心のあるモデルを保存するために必要なすべての情報が得られるまで、別の場所に保存されます。次に、モデルを保存して、キャッシュされたすべての応答を削除できます。

于 2013-06-14T03:41:19.350 に答える