файлы, которые неправильно кэшируются веб-сервером при использовании стандартных файловых операций python - PullRequest
0 голосов
/ 07 августа 2010

У меня есть приложение Django, которое заполняет контент из текстового файла и заполняет его, используя начальную опцию в стандартной форме. Файл обновляется на сервере, но когда форма обновляется, он извлекает содержимое из ранее сохраненной версии или версии до перезагрузки Apache WebServer.

Это означает, что файл кэшируется, а содержимое извлекается из неправильного кэша, а не из нового файла.

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

def spamsource():
   try:
    f= open('center_access', 'r')
    read=f.read()
    # some manipulation on read 
    f.close()
    return read
   except IOError:
    return "prono.nr"

class SpamForm(forms.Form):

    domains =forms.CharField(widget=forms.Textarea(attrs=attrs_dict),
                                label=_(u'Domains to be Banned'), initial= spamsource())
def function(request):
    # It writes the file center_access based on the changes in the textbox domains

Ответы [ 2 ]

3 голосов
/ 07 августа 2010

Проблема в том, что все параметры полей оцениваются во время определения формы.Итак, начальное значение для domains устанавливается равным любому возвращаемому значению от spamsource() во время определения формы, то есть обычно при запуске сервера.

Один из способов исправить эточтобы переопределить метод __init__ формы и установить там начальное значение для доменов:

class SpamForm(forms.Form):
    domains = ...

    def __init__(self, *args, **kwargs):
        super(SpamForm, self).__init__(*args, **kwargs)
        self.fields['domains'].initial = spamsource()

В качестве альтернативы вы можете установить начальное значение при создании формы в своем представлении:

form = SpamForm(initial={'domains': spamsource()})
0 голосов
/ 17 августа 2010

Я исправил это.Проблема заключалась в наличии всего промежуточного программного обеспечения для кэширования в settings.py, которое использовалось для ускорения работы другой стороны веб-приложения.

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