首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过点表示法访问数据

如何通过点表示法访问数据
EN

Stack Overflow用户
提问于 2015-10-07 15:34:56
回答 2查看 375关注 0票数 2

目标:从video_id中提取assessment_obj,赋值给变量

DB类型: SQLAlchemy

模型:Assessmentvideo_id放在一个多对一的关系中(多个评估可以使用视频)

1.)我试图使用dot.notation从评估2中提取video_id。)这样我就可以使用retrieve方法来提取视频信息(比如url)。

目的:视频url将用于通过JINJA2模板/HTML代码进入视频播放器src。(如果我使用的术语不正确,因为我是新手,并且试图更好地理解这些概念,我很抱歉。)

我试图跟踪一个OOP dot.notation 教程,但不确定如何从表中提取数据并分配给变量,而不会意外地重新分配变量。

views.py

窗体视图配置。

代码语言:javascript
复制
@view_config(route_name='save_assessment_result', renderer='templates/completedpage.jinja2')
def save_assessment_result(request):
    with transaction.manager:
        assessment_id = int(request.params['assessment_id'])
        assessment_obj = api.retrieve_assessment(assessment_id) # the assessment

        assessment_obj.video_id = video # this right? 
        thevid = api.retrieve_video(video) #retrieves the video via ID
        template_video = int(request.params['video'])
        # how do I get the retrieved video 'thevid' into the template? 

        # more code 

       transaction.commit()
       return HTTPCreated()

模板: templates/assessment_form.jinja2

代码语言:javascript
复制
  <div class="embed-responsive embed-responsive-16by9">
    <iframe width="640" height="360" class="embed-responsive-item" allowfullscreen name='video' src="{{ url }}"></iframe>
  </div>

新增:返回assessment_obj。新View_Config.

注:'videoname': video.videoname, 'length': video.length, 'url': video.url

代码语言:javascript
复制
@view_config(route_name='assessment', request_method='GET', renderer='templates/assessment_form.jinja2')
def assessment_form_view(request):
    with transaction.manager:
        assessment_id = int(request.matchdict['id'])
        assessment = api.retrieve_assessment(assessment_id)
        if not assessment:
            raise HTTPNotFound()
        video_id = int(request.matchdict['id']) # <--- this gives the assessmnet_id and not the video
        video = api.retrieve_video(video_id)
        return {'assessment_id': assessment_id, 'assessment_name': assessment.name, 'assessment_text': assessment.text, 'user_id': assessment.user_id, 'video_id':assessment.video_id, 'categories': ','.join([str(i) for i in assessment.categories]), 'video_id':video_id, 'videoname': video.videoname, 'length': video.length, 'url': video.url}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-07 21:36:00

在行assessment_obj.video_id = video中,video变量来自何处?

看到您正在尝试“从表中提取数据并将其赋值给一个变量”,我想知道您是否真的尝试将assessment_obj.video_id赋值给一个名为video的变量。在这种情况下,情况应该是另一种情况:

代码语言:javascript
复制
video = assessment_obj.video_id

然后你的代码几乎开始有意义了。要将数据传递给模板,只需从视图函数返回一个字典:

代码语言:javascript
复制
@view_config(route_name='save_assessment_result', renderer='templates/assessment_form.jinja2')
def save_assessment_result(request):
    with transaction.manager:
        assessment_id = int(request.params['assessment_id'])
        assessment_obj = api.retrieve_assessment(assessment_id) # the assessment

        video_id = assessment_obj.video_id
        thevid = api.retrieve_video(video_id)
        template_video = int(request.params['video'])
        return {
           'thevid': thevid,
           'template_video': template_video
        }

然后,在模板中可以引用这些变量及其成员:

代码语言:javascript
复制
<iframe ... src="{{ thevid.url }}"></iframe>
票数 1
EN

Stack Overflow用户

发布于 2015-10-08 16:04:12

根据Sergey的惊人指导,我创建了一个新的视图配置,加载了评估和视频。然后,我返回所需的值。

工作代码:

代码语言:javascript
复制
@view_config(route_name='assessment', request_method='GET', renderer='templates/assessment_form.jinja2')
def assessment_form_view(request):
    with transaction.manager:
        assessment_id = int(request.matchdict['id'])
        assessment = api.retrieve_assessment(assessment_id)
        if not assessment:
            raise HTTPNotFound()

        video = assessment.video_id
        print 'test_video_id', video
        video_obj = api.retrieve_video(video)
        print 'test_video_obj', video_obj

        return {'assessment_id': assessment_id, 'assessment_name': assessment.name, 'assessment_text': assessment.text, 'user_id': assessment.user_id, 'categories': ','.join([str(i) for i in assessment.categories]), 'url': video_obj.url, 'video_id':video_obj.video_id, 'videoname': video_obj.videoname, 'length': video_obj.length}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32996497

复制
相关文章

相似问题

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