Джанго кеширует, хотя это не должно - PullRequest
0 голосов
/ 02 февраля 2011

У меня следующая проблема.В моем приложении я позволяю пользователям загружать изображения на мой статический сервер.Каждое изображение имеет уникальный идентификатор, сгенерированный при каждом обновлении представления.Эта часть приложения проксируется через Squid и Apache.Но в моей части управления (которая не проксируется) у меня также есть возможность загружать файлы, используя тот же код.И как ни странно, мой уникальный идентификатор здесь кэшируется и меняется через ~ 15 минут, когда apache очищает кэш Python.Кто-нибудь сталкивался с такой проблемой ранее?

Какой-то код здесь, форма загрузки:

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

и идентификатор создания функции:

def create_id():

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

    return prefix + number

Я использую фиктивное кэширование, но только для запросов.

1 Ответ

0 голосов
/ 03 февраля 2011

Использование @never_cache decorator, кажется, решает проблему.

...