Bitte laden Sie die Datei herunter simple.7z
und installieren Sie sie in Ihrer Sphinx, um die hier beschriebenen Probleme zu reproduzieren. Um sie zu reproduzieren, können Sie Folgendes ausführen:
make clean
make html
Laden Sie es herunter und installieren Sie es in Ihrer Sphinx, um Probleme zu reproduzieren
Es gibt zwei Artikel in sample/source
, der Inhalt ist der gleiche, nur der Unterschied ist der Titel.
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
Einer enthält ?
darin, der andere enthält nicht ?
. Nach dem Laufen passierte etwas Seltsames 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:
Warum Firefox alles dann als What does “_” in Python mean in a for-loop?
Hinweis "_"
anzeigt :
wurde in kombiniert “_”
;
Der Titel , die nicht enthalten ?
, wie What does "_" in Python mean in a for-loop.html
wurde in kompilieren What does “_” in Python mean in a for-loop?
, die einen Add ?
drin?
Problem 2: Um auf den ersten Titel zu klicken What does “_” in Python mean in a for-loop?
, springt der Browser in einen Statusno url was not found on this server
Das Klicken auf den zweiten Titel What does “_” in Python mean in a for-loop?
funktioniert einwandfrei.
Bitte erläutern Sie mein Problem.
quelle
print(“Hello”)
??? Sie müssen "intelligente" Anführungszeichen deaktivieren.Antworten:
Problem 1 ist eigentlich kein Problem, es ist das normale Verhalten von Sphinx: Der angezeigte Titel ist nicht der Dateiname, sondern der Titel der obersten Ebene des ResT-Dokuments, der in beiden Fällen mit einem Fragezeichen endet. Siehe den Abschnitt Inhaltsverzeichnis > .. toctree :: > Einträge auf dieser Seite, in dem Folgendes angegeben ist :
Wenn Sie überzeugt sein müssen, ändern Sie einfach den Titel eines Dokuments, erstellen Sie den HTML-Code neu und sehen Sie.
Problem 2 wird durch das Vorhandensein eines nicht urlencodierten Fragezeichens im
href
Link verursacht. In einer URL bedeutet das Fragezeichen den Beginn einer Abfragezeichenfolge .Der Versuch, darauf zuzugreifen
What does "_" in Python mean in a for-loop?.html
, bedeutet, dasWhat does "_" in Python mean in a for-loop
HTML-Dokument anzufordern und ihm einen.html
Parameter zu geben. Und offensichtlich wird das angeforderte Dokument nicht gefunden, da es nicht existiert.In der Adressleiste Ihres Browsers können Sie das Fragezeichen durch seine urlencodierte Form ersetzen
%3F
und beobachten, dass es dann funktioniert.Ich habe keine Möglichkeit gefunden, Sphinx automatisch Urlencode-Dokumentnamen in Links zu erstellen
href
( dies wird tatsächlich als Fehler angesehen ) oder in einem Dokument zu erstellen, in dem die Namensbeschränkung für ResT-Dokumente klar zum Ausdruck gebracht wird.Ich weiß jedoch aus Erfahrung, dass das Benennen einer Datei mit Interpunktion häufig zu Problemen führt . Ich würde Ihnen raten, Ihr Dokument mit weniger exotischen Zeichen umzubenennen (Slugify). Wenn Sie Ihr ResT-Dokument
underscore_in_for_loop.rst
anstelle von benennenWhat does "_" in Python mean in a for-loop?.rst
, sparen Sie viel Zeit und Kopfschmerzen.Und denken Sie daran, dass dies kein Problem sein sollte, da, wie wir in der ersten Ausgabe gesehen haben, der Dokumentname nur für die URL verwendet wird.
quelle
?
ist ein Platzhalter für die Teilwortübereinstimmung in der URL und wird daher als Sonderzeichen behandelt.Platzhalter funktionieren mit zwei Arten von Jokern:
Dazu müssen Sie die URL verschlüsseln
In Python 3.x müssen Sie urllib.parse.quote importieren:
quelle
?
als Platzhalter behandelt wird und daher nicht%3f
in die URL konvertiert wird .