Faça o download do arquivo simple.7z
e instale na sua esfinge para reproduzir os problemas que descrevi aqui. Para reproduzi-lo, você pode executar:
make clean
make html
faça o download e instale na sua esfinge para reproduzir problemas
Existem dois artigos sample/source
, o conteúdo é o mesmo, a única diferença é o 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
Um contém ?
nele, o outro não contém ?
. Coisa estranha aconteceu depois 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 que o firefox foi exibido como What does “_” in Python mean in a for-loop?
Nota:
"_"
foi combinado “_”
;
O título que não contém o ?
que What does "_" in Python mean in a for-loop.html
foi compilado What does “_” in Python mean in a for-loop?
, que adiciona um ?
nele?
Problema 2: para clicar no primeiro título What does “_” in Python mean in a for-loop?
, o navegador salta para um statusno url was not found on this server
Para clicar no segundo título What does “_” in Python mean in a for-loop?
, funciona bem.
Por favor, explique meu problema.
fonte
print(“Hello”)
??? Você precisa desativar as aspas "inteligentes".Respostas:
O problema 1 não é realmente um problema, é o comportamento normal do Sphinx: o título exibido não é o nome do arquivo, mas o título de nível superior do documento ResT, que termina com um ponto de interrogação nos dois casos. Veja o Índice > .. toctree :: > Entradas seção desta página , que afirma:
Se você precisa se convencer, basta alterar o título de qualquer documento, reconstruir o HTML e ver.
O problema 2 é causado pela presença de um ponto de interrogação não codificado em url no
href
link. Em um URL, o ponto de interrogação significa o início de uma string de consulta .Isso é tentar acessar
What does "_" in Python mean in a for-loop?.html
, significa solicitar oWhat does "_" in Python mean in a for-loop
documento HTML, fornecendo um.html
parâmetro. E, obviamente, o documento solicitado não foi encontrado, pois não existe.Na barra de endereço do seu navegador, você pode substituir o ponto de interrogação pelo formato codificado em url
%3F
e observar que ele funciona.Não encontrei nenhuma maneira de fazer com que o sphinx urlencode automaticamente os nomes de documentos nos links
href
( na verdade, é considerado um bug ) ou em qualquer documento que expresse claramente a restrição de nomenclatura para documentos ResT.Mas sei por experiência que nomear um arquivo com pontuação geralmente é fonte de problemas . Aconselho você a renomear seu documento com caracteres menos exóticos (slugify-los). Nomear seu documento ResT em
underscore_in_for_loop.rst
vez deWhat does "_" in Python mean in a for-loop?.rst
economizará muito tempo e dores de cabeça.E lembre-se de que não deve ser um problema, pois, como vimos na primeira edição, o nome do documento é usado apenas para o URL.
fonte
?
é um curinga para correspondência de parte da palavra no URL e, portanto, será tratado como um caractere especial.os curingas operam com dois tipos de curingas:
Para isso, você deve codificar o URL
No Python 3.x, você precisa importar urllib.parse.quote:
fonte
?
é tratado como um curinga e, portanto, não o está convertendo%3f
no URL.