GraphQL Inputs
The code must be placed in a file named inputs.py or within a folder named inputs located in the Application directory.
Input Tools — Reference
zmag.Input— Base class for defining inputs.zmag.input— Initializes input group.zmag.value— Configures input field settings.zmag.clean— Defines cleaning functions or rules.zmag.Form— Represents an input response.
Tip
Tools used for creating GraphQL INPUT types.
Using zmag.Input and zmag.input
inputs.py
import zmag
form = zmag.input("Form")
@form
class Create(zmag.Input): ... # FormCreate
@form
class Update(zmag.Input): ... # FormUpdate
Examples
Required Field
A required field with no default value; the field must be filled.
import zmag
Author = zmag.input("Author")
@Author
class MyForm(zmag.Input):
x: str = zmag.value(required=True)
Dynamic Default Value
A field with a default value, optionally using a function for initialization.
import zmag
Author = zmag.input("Author")
@Author
class MyForm(zmag.Input):
"""GraphQL Form with Dynamic Default Value"""
y: str = zmag.value(default="Some Value")
# OR
y: str = zmag.value(default=lambda: "Some Value")
Deprecated Field
A deprecated field, indicating it should no longer be used.
import zmag
Author = zmag.input("Author")
@Author
class MyForm(zmag.Input):
"""GraphQL Form with Deprecated Field"""
z: str = zmag.value(deprecation_reason="This field is deprecated.")
Complex Field with Validation and Cleaning
A complex field setup demonstrating validation, cleaning, and transformation of input data.
import zmag
Author = zmag.input("Author")
@Author
class MyForm(zmag.Input):
"""GraphQL Form with Complex Field Setup"""
email: str = zmag.value(
regex={
# Regex pattern for email validation.
r"[\w\.-]+@[\w\.-]+": "Invalid email address"
},
rules=[
# Custom validation rule for the field.
(lambda v: v.startswith("demo") or "Invalid input")
],
clean=zmag.clean(
regex=[
# Replace text in the cleaning phase.
(r"^hello", "hola"),
(r"com", "api"),
],
rules=[
# Transform the value after applying regex replacements.
(lambda v: v.upper())
],
),
)
Example Usage
The built-in input: Form attribute provides flexible access to the input data, allowing you to manipulate and retrieve it in various formats.