Path template variables not correctly parsed with dot
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 24.4k
- Forks
- 2.3k
- Merge medio
- 2 d 7 h
- PR fusionados (30 d)
- 13
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con el ejemplo mínimo de Dash y compara la ruta /dot/<foo>.<bar> con la ruta funcional /dash/<foo>-<bar>. Rastrea cómo se analizan y rellenan las variables de path_template, y verifica después que una solicitud a /dot/abc.def produzca foo='abc' y bar='def' sin introducir regresiones en los marcadores separados por guiones.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- web-dev
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100