Как передать переменные в форму перед обработкой - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть следующая форма шаблона, содержащая несколько переменных.

<form action="https://me.s3.amazonaws.com/" method="post" enctype='multipart/form-data' class="upload-form">
    <input type="hidden" name="key" value="videos/{{filename}}">
    <input type="hidden" name="AWSAccessKeyId" value="{{access_key}}"> 
    <input type="hidden" name="acl" value="public-read">
    <input type="hidden" name="policy" value="{{policy}}">
    <input type="hidden" name="signature" value="{{signature}}">
    <input type="hidden" name="Content-Type" value="{{content_type}}">
    <input name="file" type="file"> 
    <input type="submit" value="Upload" name="upload">
</form>

Однако, как только нажата кнопка отправки, форма отправляется в amazon, и я не могу ее пропуститьпеременные.Это то, что я пытался сделать безуспешно -

    if 'upload' in request.POST:
        policy = base64.b64encode(...)
        signature = base64.b64encode(
            hmac.new('secret_key', policy, sha).digest())
        file = request.POST['files']
        filename=file.name
        content_type=mimetypes.guess_type(filename)[0]

Что мне нужно сделать, чтобы передать переменные в форму после запроса POST, но ДО того, как amazon обработает форму?Спасибо.

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

Вы должны изменить действие своей формы на представление django, и, по вашему мнению, вы можете повторно опубликовать на https://me.s3.amazonaws.com/:

В вашем шаблоне

<form action="http://mywebsite/upload" method="post" ...

По вашему мнению.py:

def upload(request):
    # Your treatment here.
    # Post the data to amazon S3.
    urllib2.urlopen("https://me.s3.amazonaws.com/", your_data)
    ...
0 голосов
/ 01 сентября 2011

Вы можете изменить форму на POST для одного из ваших собственных представлений, затем выполнить постобработку в своем представлении, а затем в своем коде представления выполнить POST для Amazon с правильными значениями, используя, скажем, urllib2 или аналогичный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...