Path template variables not correctly parsed with dot
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 24.4k
- Fork
- 2.3k
- Merge medio
- 2g 7h
- PR unite (30g)
- 13
Descrizione
Bug description
Path template variables are not parsed/populated correctly when using a dot (.) as seperator between placeholders as in /dot/<foo>.<bar>/.
When using /dot/<foo>.<bar>/ as path template, a request to /dot/abc.def should result in a call to layout(foo='abc', bar='def').
Instead there is a call to layout(foo='abc.de', part=None). (Note the missing e at the end)
Using /dash/<foo>-<bar>/ as path template, the request url is handled as expected and variables are parsed/populated correctly.
Expected behavior
Variables should be parsed as expected and correctly independent of characters between seperators.
Minimal example
import dash
from dash import Dash, html, dcc
app = Dash(__name__, use_pages=True, pages_folder="")
dash.register_page(
"Dot",
layout=lambda foo=None, bar=None: html.H1([html.B(foo), html.I(bar)]),
path_template='/dot/<foo>.<bar>'
)
dash.register_page(
"Dash",
layout=lambda foo=None, bar=None: html.H1([html.B(foo), html.I(bar)]),
path_template='/dash/<foo>-<bar>'
)
app.layout = html.Div(
[
html.H1("App"),
html.Div([
html.Div(dcc.Link(f"{page['name']} - {page['path']}", href=page["path"]))
for page in dash.page_registry.values()
]),
html.Hr(),
dash.page_container,
]
)
if __name__ == "__main__":
app.run_server(debug=True)
Environment
dash 2.8.1
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia con l'esempio minimo di Dash e confronta la route /dot/<foo>.<bar> con la route funzionante /dash/<foo>-<bar>. Traccia il modo in cui le variabili di path_template vengono analizzate e valorizzate, quindi verifica che una richiesta a /dot/abc.def produca foo='abc' e bar='def' senza introdurre regressioni nei segnaposto separati da trattini.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- web-dev
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100