Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django+;uWSGI&x2B;nginx=奇怪的缓存?_Python_Django_Nginx_Uwsgi - Fatal编程技术网

Python Django+;uWSGI&x2B;nginx=奇怪的缓存?

Python Django+;uWSGI&x2B;nginx=奇怪的缓存?,python,django,nginx,uwsgi,Python,Django,Nginx,Uwsgi,我在web应用程序上同时使用Django、uWSGI和nginx。我遇到了一个奇怪的问题,即预填充了今天日期的日期字段被卡在了今天之前的日期上。我已经把它缩小到上次重新启动uWSGI守护进程的日期。如果我重新启动守护进程并刷新页面,它会立即被修复,但是如果我明天重新访问页面,它将有今天的日期 我认为uWSGI和nginx在默认情况下都没有启用任何缓存 我不想费心包括nginx配置,因为我不相信这是相关的,但这里是我的uwsgi配置: [uwsgi] chdir=/home/nick/django

我在web应用程序上同时使用Django、uWSGI和nginx。我遇到了一个奇怪的问题,即预填充了今天日期的日期字段被卡在了今天之前的日期上。我已经把它缩小到上次重新启动uWSGI守护进程的日期。如果我重新启动守护进程并刷新页面,它会立即被修复,但是如果我明天重新访问页面,它将有今天的日期

我认为uWSGI和nginx在默认情况下都没有启用任何缓存

我不想费心包括nginx配置,因为我不相信这是相关的,但这里是我的uwsgi配置:

[uwsgi]
chdir=/home/nick/django-prod/budget
pythonpath=..
socket=/home/nick/django-prod/uwsgi/uwsgi.sock
module=budget.wsgi
wsgi-file=/home/nick/django-prod/budget/wsgi.py
master=True
pidfile=/tmp/project-master.pid
vacuum=True
uid=www-data
gid=www-data
max-requests=5000
daemonize=/var/log/uwsgi/budget.log
我相信这可能不太相关,但无论如何,我将在这里包括它,这是我用作日期选择器字段的自定义小部件,它覆盖内置日期字段:

class JDatePickerWidget(forms.DateInput):
    def __init__(self, attrs=None, format='%m/%d/%Y'):
        super(JDatePickerWidget, self).__init__(attrs)
        self.format = format

    def render(self, name, value, attrs=None):
        if value is None:
            value = ''
        final_attrs = self.build_attrs(attrs, type=self.input_type, name=name)
        if value != '':
            # Only add the 'value' attribute if a value is non-empty.
            final_attrs['value'] = force_text(self._format_value(value))
        return_string = mark_safe(u'''<script type="text/javascript">
            $(function() { $( '#%s' ).datepicker({ dateFormat: 'mm/dd/yy'}); });
            </script>''' % final_attrs['id'])
        return_string = return_string + format_html('<input{0} />', flatatt(fin$
        return return_string

class JDatePicker(forms.DateField):
    widget = JDatePickerWidget

class JDatePickerField(models.DateField):
    def formfield(self, **kwargs):
        defaults = {'form_class': JDatePicker}
        defaults.update(kwargs)
        return super(JDatePickerField, self).formfield(**defaults)
类JDatePickerWidget(forms.DateInput): 定义初始化(self,attrs=None,格式=“%m/%d/%Y”): 超级(JDatePickerWidget,self)。\uuuu初始化(attrs) self.format=格式 def render(自身、名称、值、属性=无): 如果值为“无”: 值=“” final\u attrs=self.build\u attrs(attrs,type=self.input\u type,name=name) 如果值!='': #仅当值为非空时才添加“value”属性。 最终属性['value']=强制文本(自身格式\u值(值)) return\u string=mark\u safe(u“”) $(function(){$('#%s')。日期选择器({dateFormat:'mm/dd/yy'});}); '''%final_attrs['id']) return\u string=return\u string+格式\u html(“”,flatatt(fin$ 返回字符串 类JDatePicker(forms.DateField): widget=JDatePickerWidget 类JDatePickerField(models.DateField): def表单字段(自身,**kwargs): 默认值={'form_class':JDatePicker} 默认值。更新(kwargs) 返回super(JDatePickerField,self).formfield(**默认值)
如何停止缓存,以便在我重新访问页面时刷新默认字段值?

您没有发布表单的代码,因此这主要是一个猜测,但这种问题通常来自于通过调用
datetime.datetime.now()
由于顶级代码(类主体级语句是其中的一部分)在导入时只执行一次,所以您有过时的值


(编辑)根据下面的评论,您的问题来自于在您的模型的一个字段中使用
default=datetime.datetime.now()
。您希望传递可调用项,即
default=datetime.datetime.now
(无参数),如下所述:

我使用的是
datetime.datetime.now()实际上,在我的模型定义中。
我想解决办法是更改它,使其没有
默认值=
值,而是在模板本身中呈现日期?是的,将其作为
模型的默认值。字段
会产生同样的问题。在这种情况下,解决方案(这里的文档)是传递一个可调用的instea调用callable.IOW的结果的d:replace
default=datetime.datetime.now()
default=datetime.datetime.now
(不带参数)。啊,这是重要的一部分:“如果可调用,则每次创建新对象时都会调用它。”现在可以工作了,谢谢!我有完全相同的问题。用chrome打开网站显示旧日期,但使用duckduckgo有正确的日期。。。