Цель: Вытащите video_id
от assessment_obj
, присвоить переменной
DB Тип: SQLAlchemy
Модель: Assessment
держит video_id
в многие-ко-одному (несколько оценок можно использовать видео)Как получить доступ к данным с помощью точечной нотации
1.) Я пытаюсь использовать dot.notation
тянуть video_id
от оценки 2.), так что я могу использовать метод retrieve
тянуть видео информации (например, url
).
Цель: видео url
будет использоваться для входа в видеоплеер src
через шаблон JINJA2
/HTML
. (прошу прощения, если я использую жаргон неправильно, как Я новичок, и я пытаюсь лучше понять концепции.)
Я пытался следовать OOP
dot.notation
tutorial, но не был уверен в том, как вытащить данные из таблицы и назначить переменную без случайного переназначения переменной.
views.py
Форма представления конфигурации.
@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
<div class="embed-responsive embed-responsive-16by9">
<iframe width="640" height="360" class="embed-responsive-item" allowfullscreen name='video' src="{{ url }}"></iframe>
</div>
NEW: Возвращение на assessment_obj
. Новый View_Config.
Примечание:'videoname': video.videoname, 'length': video.length, 'url': video.url
@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}
Это фантастика ... и спасибо за ловя мой разворот переменной. Хлоп. Я замечаю, что это предложение все еще не подтягивает видео. Никакой трассировки и ошибки. Я добавил атрибуты, доступные через 'evaluation_obj' выше. – thesayhey
'{{thevid.url}}' должно быть '{{url}}' ... поэтому добавьте к возвращаемым значениям ... например. ''url': thevid.url,' но по какой-то причине не работает – thesayhey
@thesayhey: я не вижу, как вы возвращаете словарь из функции, вместо этого вы возвращаете 'HTTPCreated()', что пользовательский объект Response. Если вы возвращаете ответ, ваш шаблон вообще не используется. Вам нужно вернуть словарь для вызываемого шаблона. – Sergey