0

単純なフォームのPOSTに問題があります。これが私のurl.pyです:

urlpatterns = patterns('',

    url(r'^admin/', include(admin.site.urls)),
    url(r'^', 'fileupload.views.show_template'), 
    url(r'^upload_file/', 'fileupload.views.upload_file'),
)

これが私のform.htmlです:

form action="/upload_file/" method="post">
    {% csrf_token %}
        <fieldset>
            <legend>Session</legend>
                <label for="input-one" class="float"><strong>Session Name:</strong></label><br />
                <input class="inp-text" name="input-one-name" id="session" type="text" size="30" /><br />

                <label for="input-two" class="float"><strong>Source:</strong></label><br />
                <input class="inp-text" name="input-two-name"  id="source" type="text" size="30" />

                <label for="input-two" class="float"><strong>Destination:</strong></label><br />
                <input class="inp-text" name="input-two-name"  id="destination" type="text" size="30" />
        </fieldset>



        <p><input class="submit-button" type="submit" alt="SUBMIT" name="Submit" value="Save" /></p>
        <p><input class="cancel-button" type="reset"  name="Save" value="Cancel" /></p>
    </form>

これが私のviews.pyです:

from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from fileupload.forms import UploadFileForm
from django.template import RequestContext


def show_template(request):
    return render_to_response('form.html', {'form': 'form'},  context_instance=RequestContext(request))

def upload_file(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST)
        if form.is_valid():
            sessiong = form.cleaned_data['session']
            sourceg = form.cleaned_data['source']
            destinationg = form.cleaned_data['destination']
            return HttpResponseRedirect('/thanks/') 
    else:
        form = UploadFileForm()
    return render_to_response('form.html', {'form': form},  context_instance=RequestContext(request))

問題は、フォームに入力して[保存]をクリックすると、フォームがまったく処理されないことです。これは、ビューのupload_fileがまったく機能していないことを意味します。何が問題なのでしょう?単純なロジックは次のとおりです。ユーザーがフォームに入力し、[保存]をクリックすると、データはPython変数に保存され、後でデータベースに保存する予定です。

4

2 に答える 2

1

何もするように指示していないため、処理していません。ビューを次のように変更します

def upload_file(request):
if request.method == 'POST':
    form = UploadFileForm(request.POST)
    if form.is_valid():
        sessiong = form.cleaned_data['session']
        sourceg = form.cleaned_data['source']
        destinationg = form.cleaned_data['destination']
        o = Object(foo=sessiong, bar=sourceg) # This, or whatever you want to *do* with this data
        o.save()
        return HttpResponseRedirect('/thanks/') 
else:
    form = UploadFileForm()
return render_to_response('form.html', {'form': form},  context_instance=RequestContext(request))

現状では、ビューはデータをいくつかの変数に保存してから、リダイレクトを吐き出すだけです。

編集- また、ファイルのアップロードに関するドキュメントを確認してください:リンク。また、次回 UploadFileForm コードを含めることをお勧めします。

于 2012-11-06T10:08:06.153 に答える
1

フォームデータをデータベースに保存する場合は、ケースの例でモデルを作成する必要があります

models.py:

 from django.db import models
 class Upload(models.Model):
 session = models.CharField(max_length=200)
 Source = models.CharField(max_length=200)
 Destination = models.CharField(max_length=200)

ビュー.py:

 def def upload_file(request):
     if request.method == 'POST':
         session = request.POST.get('input-one-name')
         source = request.POST.get('input-two-name')
         destination = request.POST.get('input-three-name') #edit in your html page
         object = Upload() # this will create a object for your model
         object.Session = session
         object.Source = source
         object.Destination = destination
         object.save()
         return HttpResponseRedirect('/thanks/') 
    else:
        return render_to_response('form.html', {'form': form},context_instance=RequestContext(request))

これにより、フォーム情報がデータベースに保存されます

于 2012-11-06T10:49:25.420 に答える