Descargue el archivo simple.7z
e instálelo en su esfinge para reproducir los problemas que describí aquí, para reproducirlo, puede ejecutar:
make clean
make html
descargue e instale en su esfinge para reproducir problemas
Hay dos artículos en sample/source
, el contenido es el mismo, la única diferencia es el título.
cd sample
ls source |grep "for-loop"
What does "_" in Python mean in a for-loop.rst
What does "_" in Python mean in a for-loop?.rst
Uno contiene ?
, el otro no contiene ?
. Algo extraño sucedió después de correr make html
.
make html
ls build/html|grep "for-loop"
What does "_" in Python mean in a for-loop.html
What does "_" in Python mean in a for-loop?.html
Problema 1:
¿Por qué Firefox muestra todo esto como What does “_” in Python mean in a for-loop?
Nota:
"_"
se combinó en “_”
;
El título que no contiene ?
tal como What does "_" in Python mean in a for-loop.html
fue compilado What does “_” in Python mean in a for-loop?
, ¿qué agrega un ?
?
Problema 2: para hacer clic en el primer título What does “_” in Python mean in a for-loop?
, el navegador salta a un estadono url was not found on this server
Para hacer clic en el segundo título What does “_” in Python mean in a for-loop?
, funciona bien.
Por favor, explique mi problema.
fuente
print(“Hello”)
??? Debe desactivar las citas "inteligentes".Respuestas:
El problema 1 en realidad no es un problema, es el comportamiento normal de Sphinx: el título que se muestra no es el nombre de archivo sino el título de nivel superior del documento ResT, que termina con un signo de interrogación en ambos casos. Vea la Tabla de contenido > .. toctree :: > Sección de entradas de esta página que dice:
Si necesita convencerse, simplemente cambie el título de cualquiera de los documentos, reconstruya el HTML y vea.
El problema 2 es causado por la presencia de un signo de interrogación no codificado en
href
el enlace. En una url, el signo de interrogación significa el inicio de una cadena de consulta .Eso es intentar acceder
What does "_" in Python mean in a for-loop?.html
, significa solicitar elWhat does "_" in Python mean in a for-loop
documento HTML, dándole un.html
parámetro. Y obviamente, el documento solicitado no se encuentra ya que no existe.En la barra de direcciones de su navegador, puede reemplazar el signo de interrogación por su forma codificada
%3F
y observar que funciona.No encontré ninguna manera de hacer que Sphinx codifique automáticamente los nombres de los documentos en los enlaces
href
( en realidad se considera un error ) o cualquier documento que exprese claramente la restricción de nombres para los documentos ResT.Pero sé por experiencia que nombrar un archivo con puntuación es a menudo fuente de problemas . Le recomendaría que cambie el nombre de su documento con caracteres menos exóticos (slugifíquelos). Nombrar su documento ResT en
underscore_in_for_loop.rst
lugar deWhat does "_" in Python mean in a for-loop?.rst
le ahorrará mucho tiempo y dolores de cabeza.Y recuerde que no debería ser un problema ya que, como vimos en el primer número, el nombre del documento se usa solo para la URL.
fuente
?
es un comodín para la coincidencia de palabras parciales en URL y, por lo tanto, será tratado como un carácter especiallos comodines funcionan con dos tipos de comodines:
Para esto, debes codificar la URL
En Python 3.x, debe importar urllib.parse.quote:
fuente
?
se trata como un comodín y, por lo tanto, no se convierte%3f
en la URL.