FormPump

Tela Software:
FormPump
Detalhes de Software:
Versão: 0.1.7
Data de upload: 20 Feb 15
Revelador: Dave Mankoff
Licença: Livre
Popularidade: 5

Rating: nan/5 (Total Votes: 0)

FormPump é uma ferramenta Python que integra com motores de templates populares, permitindo que você preencha corretamente em formulários HTML.
O FormPump é uma coleção de Python motor modelo extensões escritas para fazer formulários HTML muito mais fácil de trabalhar. Ele aborda diretamente os problemas relacionados com o preenchimento de valores em suas entradas, aplicando rótulos a seus inputs e exibir mensagens de erro de uma forma rápida. Ele faz isso através da introdução de um conjunto de tags / funções em seu modelo que criar elementos de formulários de forma intuitiva e natural que é rápido para se adaptar em código existente.
Actualmente, FormPump suporta Jinja2.
Uma Introdução [Jinja2] Exemplo
(Exemplos mostrados nesta README são mostrados na Jinja2. Outros idiomas templates terá uso similar.)
>>> From formpump JinjaPump importação
>>> From Jinja2 Ambiente importação
>>> Env = Ambiente (extensões = [JinjaPump])
>>> Tpl = env.from_string ('' '
... {Form% "exemplo" class = "simple-forma"%}
... {% Label 'inp'} Insira um valor: {% ENDLABEL%}
... {% Texto "inp"%}
... {% Endform%}
... '' ')
>>> Tpl.render print ()


& Nbsp;
& Nbsp;

& Nbsp;>>> print tpl.render (form_vars = {'exemplo': {'inp': 123}})

& Nbsp;
& Nbsp;

No exemplo acima, vemos um objeto do modelo simples que está sendo criado que contém um formulário. Quando prestados sem nenhum argumento, ele simplesmente imprime o formulário com nenhuma informação preenchida. Quando os "form_vars" especiais dict é fornecido, ele preenche todos os valores que ele pode encontrar na forma como ele gera.
Você também pode perceber os longos e atributos id feias que foram definidas. Estes são necessários para que FormPump pode associar etiquetas com insumos; FormPump torna-se como ele vai. Você é livre para substituí-los você mesmo, simplesmente fornecendo seu próprio ID e para os atributos em seus elementos. FormPump controla automaticamente os rótulos e as entradas no modelo e tenta associá-las de forma inteligente com o outro, mas apenas quando as entradas não têm id especificado, e os rótulos não têm para está especificado.
preenchimento de formulários
FormPump preenche formulários, observando-se os valores de entrada na variável de modelo designado. O padrão da variável form_vars mas pode ser configurado, definindo a propriedade values_dict_name da extensão (por Jinja2, defina esta sobre o meio ambiente: env.values_dict_name).
form_vars é um dicionário de dicionários. Chaves de nível superior são os identificadores de contexto forma, explicado em mais detalhe abaixo. Cada contexto forma refere-se a um outro dicionário que é um simples conjunto de pares de valores-chave que FormPump utiliza para consultar valores para o formulário. As teclas de se referir ao nome de entrada. Os valores são tornar-se o atributo de valor * para a entrada, convertido para unicode.
* Nota: Para as entradas, como um botão de rádio, onde os valores são pré-determinados, FormPump usa o valor form_vars para determinar qual o botão de opção para pré-selecionar, se houver.
Contexto Formulário de
FormPump permite que você tenha mais de um formulário no seu modelo. Cada formulário pode ter nomes de entrada sobrepostas. Os formulários são disambiguated pelo que FormPump chama o contexto formulário. O exemplo acima mostra um contexto forma definido como "exemplo" - que é a cadeia imediatamente após a palavra-chave de formulário. A cadeia deve ser uma cadeia constante, não uma expressão dinâmica variável ou outro, (há uma maneira de contornar isso coberto abaixo).
Um exemplo simples deve clarificar a sua utilização:
& Nbsp;>>> tpl = env.from_string ('' '
... {Form% "a"%}
... {% Texto "inp"%}
... {% Endform%}
... {Form% "b"%}
... {% Texto "inp"%}
... {% Endform%}
... '' ')
& Nbsp;>>> print tpl.render (form_vars = {'a': {'inp': 'A'}, 'b': {'inp': 'B'}})

& Nbsp;


& Nbsp;

Contextos Forma realmente servir a um propósito duplo. Um obstáculo comum com ter vários formulários HTML em uma única página é que pode ser difícil determinar qual formulário foi enviado, se ambas as formas têm o mesmo atributo action. Contextos de formulários podem ajudar.
Com as configurações padrão, como mostrado, até agora, eles não têm efeito direto sobre a saída. No entanto, se você definir a propriedade form_name_key sobre a prorrogação, FormPump irá inserir automaticamente uma entrada oculta que contém o valor contexto forma como o seu nome, (para Jinja2, defina esta sobre o meio ambiente).
& Nbsp;>>> env.form_name_key = '__'
& Nbsp;>>> tpl = env.from_string ('' '
... {Form% "exemplo"%}
... {% Endform%}
... '' ')
& Nbsp;>>> print tpl.render ()


O valor apresentado pode ser usado para identificar facilmente a forma apresentada no servidor.
Mas, usando esse recurso traz à tona mais uma complicação! Digamos que nós queremos ter uma forma repetida várias vezes em uma única página. Com cada repetição da forma, queremos mudar as variáveis ​​que são pré-abastecidos. Por exemplo, digamos que você tem uma lista de pessoas em uma empresa, e você quer ser capaz de editar e enviar atualizações para o número de telefone para cada um. É, portanto, queremos a mesma formname apresentado volta para o servidor, mas um contexto forma _different quando do preenchimento do formulário. Entre na função form_ctx, que lhe permite alterar o contexto onde FormPump olha para cima a partir de valores em tempo real. A função form_ctx também permite atribuir nomes contexto dinâmico aos seus formulários, que a função de formulário padrão não:
& Nbsp;>>> tpl = env.from_string ('' '
...

    ... {% Para pessoa em pessoas%}
    ...

  • ... {Form% "pessoa"%}
    ... {% Form_ctx "pessoa.% D"% pessoa ['id']%}
    ... {% Escondido "id"%}
    ... {% Label "telefone"%} {{pessoa ['name']}} {% ENDLABEL%}
    ... {% Texto "telefone"%}
    ... {% Endform%}
    ...

  • ... {% Endfor%}
    ...

... '' ')
& Nbsp;>>> pessoas = [{'id': 1, 'nome': 'Bill B.', 'telefone': '555-123-4567'},
... {'Id': 2, 'nome': 'Chris C.', 'telefone': '555-7654-321'}]
& Nbsp;>>> print tpl.render (pessoas = pessoas,
... Form_vars = dict ([('pessoa.% D'% pessoa ['id'], pessoa) por pessoa em pessoas]))

    & Nbsp;

  • & Nbsp;

    & Nbsp;
    & Nbsp;
    & Nbsp;
    & Nbsp;

    & Nbsp;

  • & Nbsp;

  • & Nbsp;

    & Nbsp;
    & Nbsp;
    & Nbsp;
    & Nbsp;

    & Nbsp;

Se você olhar para cima, você verá duas formas, ambas com o mesmo nome do formulário, mas com valores diferentes preenchidas graças à form_ctx dinâmico. A função form_ctx afeta todas as entradas que vêm depois dela. Você pode especificar vários form_ctx de um formulário, se quiser, cada um pretender antecipar o anterior. Note, porém, que o seu pode tornar-se estilisticamente confuso.
Erros forma
Erros formulário de trabalho muito parecido com form_vars. Você pode usar a função de erro no seu modelo para indicar onde os erros devem ir, em seguida, especifique Form_Error como um dicionário aninhada de dicionários que contenham qualquer e todas as mensagens de erro que você gostaria de colocar. Qualquer erro que não encontrar um valor correspondente no lookup Form_Error será deixado de fora da produção final.
>>> Tpl = env.from_string ('' '
... {Form% "exemplo"%}
... {% De erro "field_A"%}
... {% Texto "field_A"%}
... {% De erro "field_B"%}
... {% Texto "field_B"%}
... {% Endform%}
... '' ')
>>> Print tpl.render (form_vars = {"exemplo": {"field_A": "val A", "field_B": "val B"}},
... Form_errors = {"exemplo": {"field_B": "Erro B"}})

& Nbsp;
& Nbsp;
Erro B

& Nbsp;

Note também que quaisquer entradas que encontram um erro terá a classe "erro" css adicionados a eles.
As mensagens de erro por padrão são uma saída como acima & mdash; em uma div com a classe "de mensagem de erro". Você pode especificar o seu próprio estilo mensagem de erro ao atribuir funções ao seu dicionário error_renderers e em seguida, especificando o atributo renderizador no modelo: {renderizador% error = "custom"%}. . Por padrão, todos os erros de utilizar a composição de "default" que você é livre para substituir

Requisitos :

  • Python

Outro software de desenvolvedor Dave Mankoff

htmlmin
htmlmin

12 May 15

Comentário para FormPump

Comentários não encontrado
Adicionar comentário
Ligue imagens!