用于构建和/或使用LTI应用程序的Python库。分叉自https://github.com/pylti/lti

e-lti的Python项目详细描述


这个库是lti_lti_py的分叉 它已被修改为接受非标准参数并冒泡有用 以异常形式向调用方发送错误消息。

lti是一个python库,它实现了 学习工具互操作性(LTI)标准。 它基于lti_lti_py, 基于dce_lti_py, 基于ims_lti_py

安装

pip install lti

用法

这个库的主要目标是提供类 用于构建python lti工具提供程序(lti apps)。 为此,您正在寻找的功能 可能在ToolConfigToolProvider类(^{tt4})中$ 如果要使用LTI提供程序,也可以使用)。

工具配置示例(django)

下面是一个django视图的示例,您可以将其用作 向LTI使用者注册应用程序时的配置URL。

fromltiimportToolConfigfromdjango.httpimportHttpResponsedeftool_config(request):# basic stuffapp_title='My App'app_description='An example LTI App'launch_view_name='lti_launch'launch_url=request.build_absolute_uri(reverse('lti_launch'))# maybe you've got some extensionsextensions={'my_extensions_provider':{# extension settings...}}lti_tool_config=ToolConfig(title=app_title,launch_url=launch_url,secure_launch_url=launch_url,extensions=extensions,description=app_description)returnHttpResponse(lti_tool_config.to_xml(),content_type='text/xml')

工具提供程序OAuth请求验证示例(django)

fromlti.contrib.djangoimportDjangoToolProviderfrommy_appimportRequestValidatorfromoauthlib.oauth1importSignatureOnlyEndpoint# create the tool provider instancetool_provider=DjangoToolProvider.from_django_request(request=request)# the tool provider uses the 'oauthlib' library which requires an instance# of a validator class when doing the oauth request signature checking.# see https://oauthlib.readthedocs.org/en/latest/oauth1/validator.html for# info on how to create onevalidator=RequestValidator()# validate the oauth request signatureok=tool_provider.is_valid_request(SignatureOnlyEndpoint,validator)# do stuff if ok / not ok

工具消费者示例(django)

在您的视图中:

defindex(request):consumer=ToolConsumer(consumer_key='my_key_given_from_provider',consumer_secret='super_secret',launch_url='provider_url',params={'lti_message_type':'basic-lti-launch-request'})returnrender(request,'lti_consumer/index.html',{'launch_data':consumer.generate_launch_data(),'launch_url':consumer.launch_url})

在模板处:

<formaction="{{ launch_url }}"name="ltiLaunchForm"id="ltiLaunchForm"method="POST"encType="application/x-www-form-urlencoded">
  {% for key, value in launch_data.items %}
    <inputtype="hidden"name="{{ key }}"value="{{ value }}"/>
  {% endfor %}
  <buttontype="submit">Launch the tool</button></form>

测试

单元测试可以通过执行来运行

tox

这使用tox设置并运行测试环境。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中运行时在两个枚举类之间切换   java如何让PicoContainer启动/停止/处置工厂注入的组件?   带有Recyclerview onClick的java多活动   java如何从TestNG tests和Selenium接口调用默认方法?   java无法在Eclipse3.5.2中折叠注释   RR和SJF CPU调度算法的Java代码   java从属性文件配置记录器   java Notify传输在字符更改后超过20个字节完成   java阵列究竟是如何工作的   java跨类/包维护全局但可变的变量   java向setMessageListener注册侦听器服务   java按钮单击不在片段中工作   java GSSExException:使用spnego在GSSAPI上未指定故障(机制级别:不支持/启用带有HMAC SHA196的加密类型AES256CTS模式)   用java绘制虚线的图形   java从networkdrive启动windows捆绑包使用不包括JRE?   多线程java线程体系结构与应用程序设计