Veuillez télécharger le fichier simple.7z
et l'installer dans votre sphinx pour reproduire les problèmes que j'ai décrits ici, afin de le reproduire, vous pouvez exécuter:
make clean
make html
téléchargez et installez dans votre sphinx pour reproduire les problèmes
Il y a deux articles dans sample/source
, le contenu est le même, seule la différence est le titre.
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
L'un en contient ?
, l'autre n'en contient pas ?
. Une chose étrange s'est produite après la course 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
Problème 1:
Pourquoi firefox s'affiche-t-il alors sous la forme What does “_” in Python mean in a for-loop?
Remarque: a
"_"
été combiné dans “_”
;
Le titre qui ne contient aucun ?
tel que celui qui a What does "_" in Python mean in a for-loop.html
été compilé What does “_” in Python mean in a for-loop?
, qui en ajoute un ?
?
Problème 2: pour cliquer sur le premier titre What does “_” in Python mean in a for-loop?
, le navigateur passe à un étatno url was not found on this server
Pour cliquer sur le deuxième titre What does “_” in Python mean in a for-loop?
, cela fonctionne très bien.
Veuillez donner des explications sur mon problème.
la source
print(“Hello”)
??? Vous devez désactiver les citations "intelligentes".Réponses:
Le problème 1 n'est en fait pas un problème, c'est le comportement normal de Sphinx: le titre affiché n'est pas le nom de fichier mais le titre de niveau supérieur du document ResT, qui se termine par un point d'interrogation dans les deux cas. Voir la table des matières > .. toctree :: > la section Entrées de cette page qui stipule:
Si vous avez besoin d'être convaincu, changez simplement le titre de n'importe quel document, reconstruisez le HTML et voyez.
Le problème 2 est dû à la présence d'un point d'interrogation non codé en URL dans
href
le lien. Dans une URL, le point d'interrogation signifie le début d'une chaîne de requête .C'est essayer d'accéder
What does "_" in Python mean in a for-loop?.html
, c'est demander leWhat does "_" in Python mean in a for-loop
document HTML, lui donner un.html
paramètre. Et évidemment, le document demandé est introuvable car il n'existe pas.Dans la barre d'adresse de votre navigateur, vous pouvez remplacer le point d'interrogation par sa forme encodée en url
%3F
et observer qu'il fonctionne alors.Je n'ai trouvé aucun moyen de faire en sorte que sphinx code automatiquement les noms des documents dans les liens
href
( c'est en fait considéré comme un bug ) ou tout document exprimant clairement la restriction de nommage pour les documents ResT.Mais je sais par expérience que nommer un fichier avec ponctuation est souvent source de problèmes . Je vous conseillerais de renommer votre document avec des caractères moins exotiques (les slugifier). Nommer votre document ResT
underscore_in_for_loop.rst
au lieu de vousWhat does "_" in Python mean in a for-loop?.rst
fera gagner beaucoup de temps et vous évitera des maux de tête.Et n'oubliez pas que cela ne devrait pas être un problème car, comme nous l'avons vu dans le premier numéro, le nom du document est utilisé uniquement pour l'URL.
la source
?
est un caractère générique pour la correspondance de mots partiels dans l'URL et sera donc traité comme un caractère spécial.les jokers fonctionnent avec deux types de jokers:
Pour cela, vous devez encoder l'URL
Dans Python 3.x, vous devez importer urllib.parse.quote:
la source
?
est traité comme un caractère générique et qu'il n'est donc pas converti%3f
en URL.