Подача JSON в Dynatable после отправки пользователем через Deform (Pyramid) - PullRequest
0 голосов
/ 19 ноября 2018

Я создаю веб-страницу, которая принимает пользовательский ввод и возвращает таблицу на основе информации в моем бэкэнде.Я использую веб-фреймворк Pyramid.Мой текущий подход заключается в следующем:

  1. Создайте схему дуршлаг и объект формы деформации, который отображается с использованием шаблона хамелеона.

  2. Как толькопользователь нажимает на кнопку отправить, подтвердить отправку и использовать входные данные для создания списка словарей.

  3. Кодировать этот результат в JSON и передать его в dynatable.js

  4. Показать dynatable ниже моей формы представления

Шаги 3 и 4, где у меня возникла проблема.Я не знаю, что мне нужно сделать, чтобы выставить мой список словарей на dynatable.Я прочитал краткое руководство по Pyramid, поэтому у меня есть представление о том, как сделать простой AJAX с помощью средства визуализации JSON, но я понятия не имею, как реализовать это в моей текущей ситуации.

Чтобы дать лучшее представлениеМоя функция для обработки ввода Deform следующая (часть функции и шаблона адаптирована из примера Deform, предоставленного в официальном репозитории Github):

@view_config(route_name='query_log', renderer='templates/form.pt') 
def query_log(request):

schema = Device().bind(request=request)

# Create a styled button with some extra Bootstrap 3 CSS classes
process_btn = deform.form.Button(name='process', title="Process")
form = deform.form.Form(schema, buttons=(process_btn,), use_ajax=True)

# User submitted this form
if request.method == "POST":
    if 'process' in request.POST:

        try:
            appstruct = form.validate(request.POST.items())

            # Save form data from appstruct
            print("Enter ID:", appstruct["ID"])
            print("Enter date:", appstruct["date"])

            # This variable is what I want to feed to dynatable
            results = parse_log(appstruct["ID"], appstruct["date"].strftime('%Y-%m-%d'))
            json.dumps(results)

            # Create ppoup
            request.session.flash('Returning Results.')

            # Redirect to the page shows after succesful form submission
            return HTTPFound("/")

        except deform.exception.ValidationFailure as e:
            # Render a form version where errors are visible next to the fields,
            # and the submitted values are posted back
            rendered_form = e.render()
else:
    # Render a form with initial default values
    rendered_form = form.render()

return {
    # This is just rendered HTML in a string
    # and can be embedded in any template language
    "rendered_form": rendered_form,
}

Как мне передать эту переменную результатов черезJSON в Dynatable и таблица отображается ниже формы?

1 Ответ

0 голосов
/ 19 ноября 2018

Попробуйте сначала шаги ребенка.

После успешной проверки в вашем блоке try:

try:
    appstruct = form.validate(request.POST.items())
    # following depends on structure of data you need
    results = dict("id" = appstruct["ID"],
                   "date" = appstruct["date"].strftime('%Y-%m-%d'))
    data = json.dumps(results)
    return dict(data=data)

И в целевом шаблоне примите параметр data для рендеринга по вкусу.

Как только вы это сделаете, вы сможете работать с передачей data через XHR-запрос, который будет зависеть от вашего выбора библиотеки JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...