2017-02-10 11 views
0

イメージとしてフォーム:は、Djangoは:私は私のテンプレート、index.htmlの中で簡単なフォームを持っている

{% if stripped_thumbnail_file_list %} 
     {% for thumbnail_name in stripped_thumbnail_file_list %} 
     <div class=""> 
      <div class=""> 
       This is my form 
       <form class="" action="{% url 'index' %}" method="post"> 
        {% csrf_token %} 
        <input type="image" value="{{ thumbnail_name }}" src="{{ MEDIA_URL}}thumbnails/{{ thumbnail_name }}.jpg"> 
       </form> 
      </div> 
     </div> 
     {% endfor %} 
    {% else %} 
    <p>No videos are available.</p> 
    {% endif %} 

は、私は、インデックスビューは、このフォームから{{thumbnail_name}}値を引いて、としてそれを使用したいですインデックスビューがその名前を使用して一致するビデオを再生する別のビューにリダイレクトされたときの変数です。

私はフォームからその値を引き出すのに失敗しました。私はこれがDjangoフォームオブジェクトを作成していないためと思われます。私はそのオブジェクトを作成しようとしましたが、Djangoフォームオブジェクトのサンプルを私のフォームのようにイメージとして見つけることはできません。

どのように表示されますか?あるいは、フォームから値を引き出す方法を誰かが推薦することはできますか?

EDIT:views.pyスニペットを追加:

def index(request): 
    # if this is a POST request we need to process the form data 
    if request.POST: 
     # get thumbnail_name from form 
     # redirect to a new URL (hardcode thumbnail name for now): 
     return HttpResponseRedirect('2017-02-01_04-29-10/video/') 

    thumbnail_file_list = get_file_list(target_directory, ".jpg") 

    stripped_thumbnail_file_list = strip_file_extension(thumbnail_file_list) 

    template = loader.get_template('dash/index.html') 
    context = { 
     'stripped_thumbnail_file_list': stripped_thumbnail_file_list, 
    } 
    return HttpResponse(template.render(context, request)) 


def video(request, file_name): 
    print("this is the file name passed: " + file_name) 

    template = loader.get_template('dash/video.html') 
    context = { 
     'file_name': file_name, 
    } 
    return HttpResponse(template.render(context, request)) 
+0

を役に立てば幸い? –

+0

thumbnail_nameはthumbnail_file_listに保存されています – brewcrazy

答えて

0

まず:あなたは、フォームの入力プログラムに '名前' 属性を宣言する必要があります。

<input name="thumbnail_name" type="image" value="{{ thumbnail_name }}" src="{{ MEDIA_URL}}thumbnails/{{ thumbnail_name }}.jpg"> 

第二:なぜ、あなたは自分の「ビデオ」関数に、フォームの「アクション」を設定していない(あなたがリダイレクトを実行すると、すべてのあなたのPOSTデータを失っている).Then、そこからあなた値を取得することができます:それ

def video(request): 
    file_name = request.POST.get('thumbnail_name') 
    print("this is the file name passed: " + file_name) 

    template = loader.get_template('dash/video.html') 
    context = { 
    'file_name': file_name, 
    } 
    return HttpResponse(template.render(context, request)) 

のようなものは、それがどのように `thumbnail_name`を格納している

+0

'name ='を追加していただきありがとうございました。フォームアクションを 'action =" {{thumbnail_name}}/video/"'に変更したので、フォーム自体から何かを引っ張っているビューに依存する必要はありません。 – brewcrazy

関連する問題