Пожалуйста, скачайте файл simple.7z
и установите его в свой sphinx, чтобы воспроизвести проблемы, которые я описал здесь, чтобы воспроизвести его, вы можете запустить:
make clean
make html
загрузите и установите в своем сфинксе, чтобы воспроизвести проблемы
Есть две статьи sample/source
, содержание одинаковое, только разница в названии.
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
Один содержит ?
в себе, другой не содержит ?
. Странная вещь случилась после бега 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
Выпуск 1:
Почему светлячок показать все то , как What does “_” in Python mean in a for-loop?
Примечание:
"_"
был combiled в “_”
;
Заголовок, который не содержит ?
такого, как What does "_" in Python mean in a for-loop.html
был скомпилирован What does “_” in Python mean in a for-loop?
, который добавляет ?
в него?
Проблема 2. Чтобы щелкнуть первый заголовок What does “_” in Python mean in a for-loop?
, браузер перейдет в состояниеno url was not found on this server
Чтобы нажать на второй заголовок What does “_” in Python mean in a for-loop?
, он отлично работает.
Пожалуйста, дайте объяснение по моей проблеме.
источник
print(“Hello”)
??? Вам нужно отключить «умные» цитаты.Ответы:
Проблема 1 на самом деле не является проблемой, это нормальное поведение Sphinx: отображаемый заголовок - это не имя файла, а заголовок верхнего уровня документа ResT, который заканчивается знаком вопроса в обоих случаях. Смотрите оглавление > .. toctree :: > Раздел записей этой страницы, который гласит:
Если вам нужно убедиться, просто измените заголовок любого документа, перестройте HTML и посмотрите.
Проблема 2 вызвана тем, что
href
в ссылке нет вопросительного знака без urlencoded . В URL знак вопроса означает начало строки запроса .То, что пытается получить доступ
What does "_" in Python mean in a for-loop?.html
, означает запросWhat does "_" in Python mean in a for-loop
документа HTML, давая ему.html
параметр. И, очевидно, запрошенный документ не найден, так как он не существует.В адресной строке своего браузера вы можете заменить знак вопроса на его кодированную форму в формате urlenco
%3F
, после чего вы увидите, что он работает.Я не нашел способа сделать sphinx автоматически urlencode имен документов в ссылках
href
( это на самом деле считается ошибкой ) или в любом документе, четко выражающем ограничение именования для документов ResT.Но я знаю по своему опыту, что присвоение файла пунктуации часто является источником проблем . Я бы посоветовал вам переименовать ваш документ с менее экзотическими символами (слагайте их). Наименование вашего документа ResT
underscore_in_for_loop.rst
вместоWhat does "_" in Python mean in a for-loop?.rst
сэкономит вам много времени и головных болей.И помните, что это не должно быть проблемой, так как, как мы видели в первом выпуске, имя документа используется только для URL.
источник
?
является подстановочным знаком для совпадения слова части в URL и, следовательно, будет рассматриваться как специальный символ.джокеры работают с двумя типами джокеров:
Для этого вам нужно закодировать URL
В Python 3.x вам нужно импортировать urllib.parse.quote:
источник
?
это рассматривается как подстановочный знак и, следовательно, его не конвертировать%3f
в URL.