0

次の問題があります。私のアプリケーションでは、ユーザーが静的サーバーに画像をアップロードできるようにしています。各画像には、ビューを更新するたびに生成される一意の ID があります。アプリケーションのこの部分は、Squid と Apache を介してプロキシされます。しかし、私の管理部分 (プロキシされていない部分) では、同じコードを使用してファイルをアップロードすることもできます。そして奇妙なことに、私の一意の ID はここにキャッシュされており、apache が python キャッシュをクリアすると ~15 分後に変更されます。以前にそのような問題に遭遇した人はいますか?

ここにいくつかのコード、アップロードフォーム:

    <form method="post" target="upload_target" action="{{ upload_url }}" enctype="multipart/form-data">
        {{ form.as_p }}
        <p style="display:none">
            <input type="hidden" maxlength="64" name="myfileid" id="myfileid" value="{{ myfileid }}" >
        </p>
        <p>
            <input id="submit" type="submit" value="Add">
        </p>
        <iframe id="upload_target" name="upload_target" src="" style="width:0;height:0;border:0px solid #fff;"></iframe>
    </form>

見る :

def manage_element_image(request, object_id):

    template = 'management/add_element.html'

    upload_url = settings.STATIC_SERVER
    form = ElementImageForm()   
    myfileid = create_did()

    try:
        object = Element.objects.get(id=int(object_id))
    except:
        object = None

    result = render_to_string(template, RequestContext(request, {
        'upload_url': upload_url,
        'form': form,
        'myfileid': myfileid,
        'objectid': object_id,
        'object': object,
    }))

    return HttpResponse(result)

および関数生成 ID :

def create_id():

    hash = "ABCDEFGHIJKLMNOPQRSTUWVXYZ0123456789"
    length = 43
    prefix = "ELEMENT"
    number = ""
    for i in range(0, length):
        number += random.choice(hash)

    return prefix + number

私はダミーのキャッシュを使用していますが、クエリのみに使用しています。

4

1 に答える 1

0

を使用@never_cache decoratorすると問題が解決するようです。

于 2011-02-03T16:08:01.597 に答える