Jak zdefiniować niestandardowy weryfikator w Deform/Colander, który ma dostęp do wszystkich wartości węzłów pod numerami . Muszę uzyskać dostęp do wartości z dwóch pól, aby zdecydować, czy dana wartość jest ważna czy nie?Walidator Deform/Colander, który ma dostęp do wszystkich węzłów?
8
A
Odpowiedz
3
Oto przykład sprawdzania poprawności międzyfazowej. http://deformdemo.repoze.org/interfield/
2
namacalnie odpowiedź brzmi:
def verify_email_validator(form, values):
if values['email_address'] != values['verify_email']:
raise Invalid(form, 'Email values do not match')
class MySchema(MappingSchema):
def __init__(self, *args, **kwargs):
super(KickEntrySchema, self).__init__(*args, **kwargs)
self.validator=verify_email_validator # entire form validator
email_address = SchemaNode(Email())
verify_email = SchemaNode(Email())
Uwaga walidator forma jest wywoływana tylko wtedy, gdy żaden z poszczególnych walidatorami polowych zgłosi błąd.
3
Aby umieścić walidatora dla wszystkich pól durszlak możemy po prostu zrobić z tej metody
validator:
def user_DoesExist(node,appstruct):
if DBSession.query(User).filter_by(username=appstruct['username']).count() > 0:
raise colander.Invalid(node, 'Username already exist.!!')
Schema:
class UserSchema(CSRFSchema):
username = colander.SchemaNode(colander.String(), description="Extension of the user")
name = colander.SchemaNode(colander.String(), description='Full name')
extension = colander.SchemaNode(colander.String(),description='Extension')
pin = colander.SchemaNode(colander.String(), description='PIN')
Widok:
@view_config(route_name='add_user', permission='admin', renderer='add_user.mako')
def add_user(self):
#Here you can provide validator method as a parameter. And you can validate any field you want.
schema = UserSchema(validator = user_DoesExist).bind(request=self.request)
form = deform.Form(schema, action=self.request.route_url('add_user'), buttons=('Add User','Cancel'))
Popraw mnie, jeśli się mylę w moim scenariuszu.
Dzięki
Powiązane problemy
- 1. Najkrótsza ścieżka do odwiedzenia wszystkich węzłów
- 2. JTree: Zaznaczanie wszystkich węzłów programowo
- 3. NSOutlineView - Automatyczne rozwijanie wszystkich węzłów
- 4. przeciąganie węzłów, gdy ich rodzic ma transformację, powoduje zniknięcie węzłów.
- 5. Jak wyczyścić model JTree? (Usuwanie wszystkich węzłów)
- 6. require.js: Dostęp do wszystkich załadowanych modułów
- 7. Niestandardowe Walidator nie wypalanie
- 8. C++: Suma wartości wszystkich węzłów drzewa binarnego
- 9. C#: Pobieranie wszystkich węzłów dokumentu XML
- 10. Uzyskaj dostęp do wszystkich właściwości stylu CSS?
- 11. dostęp do pliku, który jest napisany
- 12. Czy jboss-web.xml ma dostęp do właściwości?
- 13. Rozszerzenie Jinja, które ma dostęp do kontekstu
- 14. wartości aktywacji dla wszystkich węzłów w sieci PyBrain
- 15. Jak utworzyć kod pośredniczący, który ma zastosowanie do wszystkich plików specyfikacji w RSpec
- 16. Symfony 3 - jak wprowadzić walidator do usługi?
- 17. RSpec Test niestandardowy walidator
- 18. asp.net Walidator na pole tekstowe
- 19. Move r pakiety do nowego komputera, który nie ma internetu
- 20. Czy istnieje walidator PHP?
- 21. Siatka i StackPanel, który ma lepszą wydajność?
- 22. Który operator logiczny ma pierwszeństwo
- 23. Jak uzyskać listę wszystkich węzłów podrzędnych w TreeView w .NET
- 24. Uzyskaj listę baz danych użytkownik ma dostęp do
- 25. jQuery walidator addmethod niestandardowy komunikat
- 26. Uzyskaj dostęp do wszystkich fasoli szparagowych danego typu.
- 27. Dodaj zdarzenie onclick do węzłów w Sigma.js
- 28. Dostęp do n-ty element IEnumerable
- 29. Transformacja Web.config: jak zastosować transformację do wszystkich węzłów pasujących do wyrażenia Locator?
- 30. walidator $ [metoda] jest niezdefiniowana .validator.methods
To rozwiązanie nie działa, gdy powiąże moj_schemat do formularza w widoku tj deform.Form (moj_schemat(). Bind(), przyciski = ('Wyślij', 'Anuluj'). ...). Rozwiązanie Tim Hoffmana działa i jest warte kliknięcia, ponieważ proponuje zastąpienie parametru słowa kluczowego zamiast przesłonięcia metody. –