用于构建和/或使用lti应用程序的python库

lti的Python项目详细描述


https://travis-ci.org/pylti/lti.svg?branch=masterhttps://codecov.io/gh/pylti/lti/branch/master/graph/badge.svgJoin the chat at https://gitter.im/pylti/ltiRequirements Status

lti是一个python库,它实现了 学习工具可操作性(LTI)标准。 它基于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)# 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>

测试

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

tox

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

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

推荐PyPI第三方库


热门话题
我们应该在测试java代码时模拟黄瓜测试吗。我们应该在多大程度上使用黄瓜?   Hibernate Weblogic 10.3.4 java。lang.NoSuchMethodError:javax/persistence/spi/PersistenceUnitInfo。getValidationMode()Ljavax/persistence/ValidationMode;   java如何在main()中访问私有静态实例变量   java JMockit无法模拟类的公共final字段   java是否可以返回特定控制器操作的输出(html)?   java如何返回正确类型的列表?   rest-OpenUI/Swagger-java-to-API   java组织。springframework。豆。工厂NoSuchBeanDefinitionException或加载ApplicationContext失败   java使用POST将参数从JSP发送到Servlet   java如何监听特定的按钮按下和主视图用户交互?   java如何让gradle在本地maven repo中覆盖库?   如何在Java中“合并”两个URI?   java如何制作一个方法来移动数组中的字符?   使用来自java的命令启动powershell窗口   java垃圾收集器和匿名类   java如何为CellTable(GWT 2.4)中的ImageResourceCell创建PanelPopup?