Matraz & WTForms: Widget DatePicker para mostrar una fecha

Tengo un pequeño Frasco de la aplicación, que cuenta con tres campos (Destino, Hora de Inicio y Hora de Finalización). Me gustaría utilizar widget DatePicker para mostrar el calendario cuando la selección de fechas de inicio y fin.

Con mi actual secuencias de comandos de la fecha de widget no aparecer en absoluto. Lo que me estoy perdiendo aquí?

app.py:

# -*- coding: utf-8 -*- 

from flask.ext.wtf import Form
from wtforms import SubmitField, SelectField, DateField
from flask import Flask, render_template, request
from flask.ext.bootstrap import Bootstrap
from flask.ext.admin.form.widgets import DatePickerWidget

class GeneralForm(Form):
    destination = SelectField(choices = data)
    start_time = DateField('Start at', widget=DatePickerWidget())
    end_time = DateField('End at', widget=DatePickerWidget())
    submit = SubmitField('Submit')

@app.route("/", methods=['GET', 'POST'])
def index():
    form = GeneralForm(request.form)
    if request.method == 'POST':
        destination = form.destination.data
        start_time = form.start_time.data
        end_time = form.end_time.data
        return render_template('page.html', form=form)
    else:
        return render_template('index.html', form=form)

bootstrap = Bootstrap(app)
if __name__ == '__main__':
    app.run(debug=True)

index.html:

<link rel="stylesheet"
      href="{{url_for('.static', filename='mystyle.css')}}">
<link rel="stylesheet"
      href="{{url_for('.static', filename='datepicker.css')}}">
<link rel="javascript"
      href="{{url_for('.static', filename='main.js')}}">
<link rel="javascript"
      href="{{url_for('.static', filename='bootstrap-datepicker.js')}}"

<form action="#" method="post">
     {{ form.destination }}
     {{ form.start_time(class='datepicker') }}
     {{ form.end_time(class='datepicker') }}
     {{ form.submit }}
</form>
InformationsquelleAutor jjjayn | 2015-10-06

2 Kommentare

  1. 4

    Matraz de Administración de DatePickerWidget() básicamente añade data-date-format="YYYY-MM-DD" data-role="datepicker" atributos de un campo de entrada. Después de que una función personalizada en JavaScript, ubicado en flask_admin/static/admin/js/form.js activa el Arranque widget Datepicker en estos campos.

    Por lo que es necesario incluir este script en la plantilla (o escribir su propio).
    Añadir esta línea en la parte superior de su plantilla, que incluye un ayudante macro:

    {% import 'admin/static.html' as admin_static with context %}

    y, a continuación, usted puede incluir la form.js a través de la adición de estas líneas en su plantilla (este script requiere moment.js así):

    <script src="{{ admin_static.url(filename='vendor/moment.min.js') }}"></script>
    <script src="{{ admin_static.url(filename='admin/js/form.js') }}"></script>

    Nota: también puede utilizar el Bootstrap-Datepicker de los archivos js y css se entregan con Matraz de Administración. Ver el form_css() y form_js() macros en flask_admin/templates/bootstrap3/admin/lib.html y copia las líneas correspondientes en su plantilla.

    • La aplicación no es capaz de encontrar la plantilla admin/static.html. La importación de la línea de tiros TemplateNotFound de error.
    • De hecho, he añadido form.js y moment.js de github.com/flask-admin/flask-admin/tree/master/flask_admin/static/admin/. El widget todavía no desovar.
  2. 0

    Ha declarado el matraz de bootstrap base.html archivo de referencia en la parte superior de la página?

    {% extends "bootstrap/base.html" as wtf %}

    Usted puede, a continuación, iniciar su formulario en su página, simplemente agregando en el siguiente

    {{ wtf.quick_form(form) }}
    • Sí, y de hecho he intentado {{ wtf.quick_form(form) }}. Sin embargo, todavía no estoy capaz de obtener el widget datepicker de trabajo. Gracias por tu respuesta!

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea