Pobierz plik simple.7z
i zainstaluj w swoim sfinksie, aby odtworzyć problemy, które tu opisałem, aby je odtworzyć, możesz uruchomić:
make clean
make html
pobierz i zainstaluj w swoim sfinksie, aby odtworzyć problemy
Są dwa artykuły sample/source
, treść jest taka sama, jedyną różnicą jest tytuł.
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
Jeden zawiera ?
, a drugi nie ?
. Dziwna rzecz wydarzyła się po uruchomieniu 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
Problem 1:
Dlaczego firefox pokazuje to wszystko jako What does “_” in Python mean in a for-loop?
Uwaga:
"_"
został połączony “_”
;
Tytuł, który nie zawiera ?
takiego, w jakim What does "_" in Python mean in a for-loop.html
został wkompilowany What does “_” in Python mean in a for-loop?
, który dodaje ?
?
Problem 2: Aby kliknąć pierwszy tytuł What does “_” in Python mean in a for-loop?
, przeglądarka przechodzi do stanuno url was not found on this server
Aby kliknąć drugi tytuł What does “_” in Python mean in a for-loop?
, działa dobrze.
Proszę wyjaśnić mój problem.
źródło
print(“Hello”)
??? Musisz wyłączyć „inteligentne” cytaty.Odpowiedzi:
Problem 1 tak naprawdę nie jest problemem, jest to normalne zachowanie Sphinx: wyświetlany tytuł nie jest nazwą pliku, ale tytułem najwyższego poziomu dokumentu ResT, który w obu przypadkach kończy się znakiem zapytania. Zobacz spis treści > .. toctree :: > Wpisy na tej stronie, który stwierdza:
Jeśli chcesz się przekonać, po prostu zmień tytuł dowolnego dokumentu, przebuduj HTML i zobacz.
Problem 2 jest spowodowany obecnością nieoznaczonego znaku zapytania w
href
linku. W adresie URL znak zapytania oznacza początek ciągu zapytania .To próbuje uzyskać dostęp
What does "_" in Python mean in a for-loop?.html
, czyli poprosić oWhat does "_" in Python mean in a for-loop
dokument HTML, podając mu.html
parametr. I oczywiście żądany dokument nie został znaleziony, ponieważ nie istnieje.W pasku adresu przeglądarki możesz zastąpić znak zapytania jego urlencodowaną postacią
%3F
i obserwować, jak działa.Nie znalazłem żadnego sposobu, aby sfinks automatycznie urlencode nazwy dokumentów w linkach
href
(w rzeczywistości jest to uważane za błąd ) ani w żadnym dokumencie wyraźnie wyrażającym ograniczenia nazewnictwa dla dokumentów ResT.Ale wiem z doświadczenia, że nazywanie pliku interpunkcją jest często źródłem problemów . Radziłbym, abyś zmienił nazwę dokumentu na mniej egzotyczne znaki (slugify). Nazwanie dokumentu ResT
underscore_in_for_loop.rst
zamiastWhat does "_" in Python mean in a for-loop?.rst
zaoszczędzi ci dużo czasu i problemów.I pamiętaj, że nie powinno to stanowić problemu, ponieważ, jak widzieliśmy w pierwszym numerze, nazwa dokumentu jest używana tylko dla adresu URL.
źródło
?
jest symbolem wieloznacznym dla dopasowania słów częściowych w adresie URL i dlatego będzie traktowany jako znak specjalny.Dzikie karty działają z dwoma typami jokerów:
W tym celu musisz zakodować adres URL
W Pythonie 3.x musisz zaimportować plik urllib.parse.quote:
źródło
?
jest traktowany jako symbol wieloznaczny i dlatego nie jest konwertowany%3f
na adres URL.