如何使用python-cod从webbrowser的地址栏获取附加在url中的参数

2024-10-03 02:46:35 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用oauth2.0时,在允许我的web应用程序通过Google登录访问directoryapi之后,Google将我重定向回我的web应用程序页面,并在URL中附加一个授权代码。在

像这样->>>; http://www.mydomain:8069/?code=4%2FZ6tHz_FoteiCGYMfbADu3_1.AjMpYP1TpHAVXE-sT2ZLcbTj9a4FiwI&db=training_crm#menu_id=108&action=101

现在我需要从URL获取代码,以便交换访问令牌。如何在URL中使用python代码获取这个code参数??在

(**正在使用OpenERP)


Tags: 代码web应用程序httpurlwwwgooglecode
1条回答
网友
1楼 · 发布于 2024-10-03 02:46:35

我相信您所追求的是一种从查询字符串获取数据的方法。 如何访问它取决于web服务器与python模块的接口方式。它通常存储在一些环境变量中,web服务器将这些变量作为来自客户端的HTTP请求的一部分传递给您的应用程序。在

看看https://doc.openerp.com/trunk/server/routing/,OpenERP似乎为url路由提供了一些帮助类和一个请求包装器。在

我建议使用openerp.http.HttpRequest. 在


编辑Reading over this document,OpenERP似乎为您提供了他们所称的“controller”基类,其方法可用于url路由。(也就是说,根据url来决定向客户端呈现什么内容)

如果文件夹结构是这样的:

web_example
├── controllers
│   ├── __init__.py
│   └── my_controllers.py
├── __init__.py
└── __openerp__.py

然后可以在my中定义这些方法_控制器.py文件。这是我的一个例子_控制器.py模块(来自上述文档):

^{pr2}$

此类继承自OpenERP.http.Controller类提供“controller”的所有基方法和属性。每个方法都有一个装饰器('@http.route,它告诉基类此方法用于url路由。在

这是来自文档:

Each time you define a method with @http.route() it defines a url to match. As example, the some_html() method will be called a client query the /my_url/some_html url.

所以在这个例子中,你的web应用程序将路由www.mysite.com/my_url/some_html网站指向在html标题标记中显示“这是一个测试”的页面。在

但您希望捕获查询字符串(“?”后面的变量在url中)。根据相同的文档,这也可以用controller类来完成。在您的问题中提供的url中,查询字符串由变量“code”和“db”以及它们对应的变量组成。这种使用HTTP在两台机器之间传输数据的方法称为GET方法。在

要使服务器使用这些变量执行某些操作,您可以再次使用controller类。在每个@http_route方法中,可以将http参数作为方法的命名参数。例如:

class MyController(http.Controller):

    @http.route('/', type="http")
    def some_html(self, code, db):
        return "the code is {0}, the db is {1}".format(code,db)

然后这个方法将捕捉您在问题中给出的url的参数,并能够使用它做一些事情。在

希望这是有用的。在

相关问题 更多 >