首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将此表单从带有JSON文件的python提交到指定的网站?

如何将此表单从带有JSON文件的python提交到指定的网站?
EN

Stack Overflow用户
提问于 2021-08-11 06:10:30
回答 1查看 213关注 0票数 0

我希望生成一个JSON文件并使用python提交。这有可能吗?怎么可能?有可能使用requests.post吗?

实际文件在这里。我只是在python https://kite.trade/docs/connect/v3/basket/中实现这一点。

我在下面添加了全部文档,希望通过python发送2个或更多订单。

我认为最后一个块正是我所需要的,但不是渲染链接,只是直接执行从python,使用风筝连接执行多个顺序使用篮子,同时使用python而不是java脚本

离地订单执行功能允许您将用户重定向到Kite的交换批准订单页面,在该页面中,他们可以无缝地返回到应用程序,就像支付网关一样。这样,您就不必为订单执行屏幕构建、维护和获得exchange批准。Kite Publisher程序使用非现场订单执行来提供不需要任何API集成的可嵌入Javascript+HTML交易按钮。

启动订单示例JSON篮

代码语言:javascript
复制
[{
  "variety": "regular",
  "tradingsymbol": "INFY",
  "exchange": "NSE",
  "transaction_type": "BUY",
  "order_type": "MARKET",
  "quantity": 10,
  "readonly": false
}, {
  "variety": "regular",
  "tradingsymbol": "NIFTY15DECFUT",
  "exchange": "NFO",
  "transaction_type": "SELL",
  "order_type": "LIMIT",
  "price": 7845,
  "quantity": 1,
  "readonly": false
},
{
  "variety": "bo",
  "tradingsymbol": "RELIANCE",
  "exchange": "NSE",
  "transaction_type": "BUY",
  "order_type": "LIMIT",
  "product": "MIS",
  "price": 915.15,
  "quantity": 1,
  "stoploss": 5,
  "squareoff": 7,
  "trailing_stoploss": 1.5,
  "readonly": true
}]
Posting the JSON basket


<form method="post" id="basket-form" action="https://kite.zerodha.com/connect/basket">
  <input type="hidden" name="api_key" value="xxx" />
  <input type="hidden" id="basket" name="data" value="" />
</form>

<script>
  document.getElementById("basket").value = your_basket;
  document.getElementById("basket-form").submit();
</script>

用户可以发送多个订单,然后在类似于购物篮的界面上进行确认。您应该准备一个使用所需的订单参数进行交易的JSON工具列表,并将其作为一个表单字段,连同您的api_key到https://kite.zerodha.com/connect/basket的名称数据一起发布。

这是一个browser / mobile (webview)请求,必须在用户端进行,尽管篮子准备可以在后端进行。发出请求的最简单方法是创建一个隐藏表单,将JSON有效负载插入其中,然后使用Javascript自动提交它。

如果您正在准备web应用程序上的购物篮客户端,可以使用Kite Publisher javascript插件来简化工作。

备注

您不必使用登录API启动登录以执行非现场订单。如果用户还没有登录,他们将被要求登录,否则,他们将被直接带到订单篮。无论是哪种方式,最终,您都将在redirect_url上接收状态和redirect_url,就像登录流中的一样。

将脱机执行链接到Kite Connect,除登录后出现的订单篮外,与登录的流程相同。一旦用户下完订单,篮子将重定向回您注册的redirect_login和一个request_key,就像登录一样。您可以使用这个键为进一步的API交互创建一个新的Kite会话,或者完全忽略它。

Publisher JS插件,Kite Publisher Javascript插件允许您在网页中添加一键交易按钮。它的工作原理就像一个篮子和一个支付网关,其中一个内联弹出弹出在你的网页上打开,引导用户通过交易,并使用户回到你的页面上。正如偏移量订单执行部分所描述的那样,可以从这个流中捕获request_token,以启动Kite连接会话。

您可以使用Javascript插件动态地向篮子中添加一个或多个股票(最多10股),或者使用普通HTML嵌入简单的静态按钮。

开始

代码语言:javascript
复制
<script src="https://kite.trade/publisher.js?v=3"></script>

将Kite Publisher包含在网页的末尾,在结束标记之前粘贴下面的脚本标记。您只需要包含此一次,就可以在页面上呈现任意数量的按钮。

品牌HTML5按钮

代码语言:javascript
复制
<!--  A link that initiates a buy (market) of the SBIN stock //-->

    <kite-button href="#" data-kite="your_api_key"
                data-exchange="NSE"
                data-tradingsymbol="SBIN"
                data-transaction_type="BUY"
                data-quantity="1"
                data-order_type="MARKET">Buy SBI stock</kite-button>

您可以使用自定义的HTML5标记来呈现带有品牌的风筝按钮,这些按钮只需单击一次就可以启动交易。品牌按钮的工作方式类似于社交媒体按钮,您可以在页面中包含任意数量的按钮。

自定义HTML5按钮

代码语言:javascript
复制
   <a href="#" data-kite="your_api_key"
                data-exchange="NSE"
                data-tradingsymbol="SBIN"
                data-transaction_type="BUY"
                data-quantity="1"
                data-order_type="MARKET">Buy SBI stock</a>
    
    
    <!--  A button that initiates a sell (LIMIT) of the RELIANCE stock //-->
    <button data-kite="your_api_key"
            data-exchange="NSE"
            data-tradingsymbol="RELIANCE"
            data-transaction_type="SELL"
            data-quantity="1"
            data-order_type="LIMIT"
            data-price="100">Buy RELIANCE</button>

<!--  A button that initiates a BO of the RELIANCE stock //-->
<button data-kite="your_api_key"
        data-exchange="NSE"
        data-tradingsymbol="RELIANCE"
        data-transaction_type="BUY"
        data-quantity="1"
        data-order_type="LIMIT"
        data-variety="bo"
        data-product="MIS"
        data-price="915"
        data-stoploss="5"
        data-squareoff="7"
        data-trailing_stoploss="1.5"
        >Buy RELIANCE (Bracket Order)</button>

您可以在任何HTML元素上使用HTML5数据属性,并将其转换为一个贸易按钮,只需单击一次即可调用该按钮。右边的例子显示了一个链接和一个被转换成交易按钮的按钮。

用Javascript生成动态按钮

代码语言:javascript
复制
<!-- A Kite button will be generated inside this container //-->
<p id="default-button"> </p>

<!-- The basket will be linked to this element's onClick //-->
<button id="custom-button">Buy the basket</button>
代码语言:javascript
复制
<script>
// Only run your custom code once KiteConnect has fully initialised.
// Use KiteConnect.ready() to achieve this.
KiteConnect.ready(function() {
    // Initialize a new Kite instance.
    // You can initialize multiple instances if you need.
    var kite = new KiteConnect("your_api_key");

    // Add a stock to the basket
    kite.add({
        "exchange": "NSE",
        "tradingsymbol": "INFY",
        "quantity": 5,
        "transaction_type": "BUY",
        "order_type": "MARKET"
    });

    // Add another stock
    kite.add({
        "exchange": "NSE",
        "tradingsymbol": "SBIN",
        "quantity": 1,
        "order_type": "LIMIT",
        "transaction_type": "SELL",
        "price": 105
    });

    // Add a Bracket Order
    kite.add({
        "tradingsymbol": "RELIANCE",
        "exchange": "NSE",
        "transaction_type": "BUY",
        "order_type": "LIMIT",
        "product": "MIS",
        "price": 915.15,
        "quantity": 1,
        "variety": "bo",
        "stoploss": 5,
        "squareoff": 7,
        "trailing_stoploss": 1.5,
        "readonly": true
    });

    // Register an (optional) callback.
    kite.finished(function(status, request_token) {
        alert("Finished. Status is " + status);
    });

    // Render the in-built button inside a given target
    kite.renderButton("#default-button");

    // OR, link the basket to any existing element you want
    kite.link("#custom-button");
});

您可以创建一个股票篮,并获得插件来呈现执行它的Kite按钮,或者将其链接到您自己的按钮(或任何HTML元素)。

插件异步加载它的资产,所以在它完全加载之后初始化自定义KiteConnect调用是很重要的。您需要使用KiteConnect.ready()函数来实现这一点。

EN

回答 1

Stack Overflow用户

发布于 2021-08-11 10:03:23

对于第一部分的问题,如何生成json结构,可以从标准库中使用json模块。然后,根据json的位置(存储为字符串变量或文本文件),可以使用json.loadsjson.load将其转换为python对象。有关详细信息,请查看文档

代码语言:javascript
复制
import json


# string from file
with open('file', 'r') as fd:
   py = json.load(fd.read())
   print(type(py))
   # do smt

# from variable string
js_text ="""
[{
      "variety": "regular",
      "tradingsymbol": "INFY",
      "exchange": "NSE",
      "transaction_type": "BUY",
      "order_type": "MARKET",
      "quantity": 10,
      "readonly": false
    }, # ... as above
]"""


py = json.loads(js_text)
print(type(py))

对于第二部分,您应该提供一个最小的工作示例..。太多的可能性

编辑:第二部分

再说一次,有很多可能性.您可以尝试使用requests模块(而不是从标准库)。此外,您应该查看响应,以了解连接所需的内容和方式。这里是一个说明性的例子

代码语言:javascript
复制
url = # smt
headers = {} # such as user-agent, ...
req = requests.post(url, json=js_text[0], headers=headers) # post request

最终尝试json={'json_payload': js_text[0]}

...and提供一些代码快照!!

在这里你能找到requests的文档吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68736818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档