You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用Gravity Forms API筛选日期失效及编码问题求助

解决Gravity Forms API调用的URL解码错误与日期筛选失效问题

一、修复URL解码错误

直接拼接含JSON的URL会触发OAuth1签名时的解码错误,原因是URL中的JSON字符未被正确编码,且OAuth1Session会自动处理参数签名,正确做法是将search参数的JSON对象序列化为字符串后,通过params传递:

import json
import oauthlib
from requests_oauthlib import OAuth1Session

consumer_key = "你的Consumer Key"
client_secret = "你的Client Secret"

# 初始化OAuth1会话
session = OAuth1Session(
    consumer_key,
    client_secret=client_secret,
    signature_type=oauthlib.oauth1.SIGNATURE_TYPE_QUERY
)

url = 'https://localhost/wp-json/gf/v2/entries'

# 将筛选条件序列化为JSON字符串,放入params
params = {
    "search": json.dumps({
        "field_filters": [
            {"key": "date_created", "value": "2023-09-01", "operator": "contains"}
        ]
    })
}

response = session.get(url, params=params)
print(response.json())

二、解决日期筛选失效的替代方案

1. 调整日期匹配逻辑

date_created字段存储的是含时分秒的完整时间戳,用is操作符需要精确匹配到秒,几乎无法命中。改用以下方式:

  • 模糊匹配日期部分:用contains操作符匹配日期字符串的前10位(YYYY-MM-DD)
  • 范围筛选:指定起始和结束时间,覆盖目标日期的全天

示例代码(范围筛选):

params = {
    "search": json.dumps({
        "field_filters": [
            {"key": "date_created", "value": "2023-09-01 00:00:00", "operator": "greater_than_or_equal"},
            {"key": "date_created", "value": "2023-09-02 00:00:00", "operator": "less_than"}
        ]
    })
}

2. 统一使用OAuth1Session发起请求

避免混用普通requests和OAuth1会话,确保请求携带正确的认证信息,否则API可能忽略筛选参数返回全量数据。

3. 验证字段键名准确性

调用无筛选的/entries接口,返回一个条目,确认实际存储的日期字段键名是否为date_created(部分环境可能为created_date)。

4. 手动编码参数(备选方案)

如果自动参数编码仍有问题,可手动编码search参数后拼接URL:

import urllib.parse

search_filter = {
    "field_filters": [{"key": "date_created", "value": "2023-09-01", "operator": "contains"}]
}
encoded_search = urllib.parse.quote(json.dumps(search_filter))
url = f'https://localhost/wp-json/gf/v2/entries?search={encoded_search}'

response = session.get(url)
print(response.json())

内容的提问来源于stack exchange,提问作者John Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:50:20