用于构建和/或使用lti应用程序的python库
lti的Python项目详细描述
lti是一个python库,它实现了 学习工具可操作性(LTI)标准。 它基于dce_lti_py, 基于ims_lti_py。
安装
pip install lti
用法
这个库的主要目标是提供类 用于构建python lti工具提供程序(lti apps)。 为此,您正在寻找的功能 可能在ToolConfig和ToolProvider类(^{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)# or you may need some additional LTI parameterslti_tool_config.cartridge_bundle='BLTI001_Bundle'lti_tool_config.cartridge_icon='BLTI001_Icon'lti_tool_config.icon='http://www.example.com/icon.png'returnHttpResponse(lti_tool_config.to_xml(),content_type='text/xml')
工具提供程序OAuth请求验证示例(django)
fromlti.contrib.djangoimportDjangoToolProviderfrommy_appimportRequestValidator# 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(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>