疑問符を含む最初のファイルから変換されたhtmlファイルがカタログをクリックするとブラウザに表示されないのはなぜですか?


14

ファイルsimple.7zをダウンロードし、sphinxにインストールして、ここで説明した問題を再現してください。再現するには、次のコマンドを実行します。

make clean
make html   

問題を再現するには、sphinxにダウンロードしてインストールします

には2つの記事が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

1つはその中に含まれ?、もう1つは含まれません?。実行後に奇妙なことが起こりました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

<code> make html </ code>の実行後にタイルを確認してください 問題1:
なぜFirefoxはのようにすべてを示しWhat does “_” in Python mean in a for-loop? 注: "_"にcombiledました“_”。など
が含まれていないタイトルは、に追加されていますか? ?What does "_" in Python mean in a for-loop.htmlWhat 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

最初のタイトルをクリックするときにこのサーバーでURLが見つかりませんでした 2番目のタイトルをクリックすると、What does “_” in Python mean in a for-loop?正常に動作します。 2番目のタイトルをクリックするとうまくいきます

私の問題について説明してください。


1
SphinxがこのHTMLを生成した元のreStructuredTextを表示してください。
スティーブピアシー

print(“Hello”)??? 「スマート」クオートをオフにする必要があります。
kthy

回答:


6

問題1は実際には問題ではなく、Sphinxの通常の動作です。表示されるタイトルはファイル名ではなく、ResTドキュメントの最上位のタイトルで、どちらの場合も疑問符で終わります。参照目次 > .. toctree :: > エントリのセクションこのページ状態:

toctreeのドキュメントタイトルは、参照されたドキュメントのタイトルから自動的に読み取られます。

納得する必要がある場合は、ドキュメントのタイトルを変更し、HTMLを再構築して確認してください。


問題2href、リンクにurlencodeされていない疑問符が含まれていることが原因です。URLでは、疑問符はクエリ文字列の開始を意味します

これはWhat does "_" in Python mean in a for-loop?.html、にアクセスしようとしています。つまり、What does "_" in Python mean in a for-loopHTMLドキュメントをリクエストし、.htmlパラメータを指定します。そして明らかに、要求されたドキュメントは存在しないため見つかりません。

ブラウザのアドレスバーで、疑問符をurlencoded形式%3Fに置き換えて、機能することを確認できます。

私は、sphinxがリンクのドキュメント名を自動的にurlencodeする方法href実際にはバグと見なされます)、またはResTドキュメントの命名制限を明確に表すドキュメントを見つけられませんでした。

しかし、経験から、句読点を使用してファイルに名前付けると問題が発生することがよくありますエキゾチックな文字を少なくしてドキュメントの名前を変更することをお勧めします(それらを汚い)。underscore_in_for_loop.rst代わりにResTドキュメントに名前を付けるWhat does "_" in Python mean in a for-loop?.rstと、多くの時間と頭痛の種を節約できます。

また、最初の問題で見たように、ドキュメント名はURLにのみ使用されるため、問題にはならないことを覚えておいてください。


4

?あるワイルドカード URL内の部分単語照合のため、特殊文字として扱われます。

ワイルドカードは2種類のジョーカーで機能します。

  ? - any character  (one and only one)
  * - any characters (zero or more)

このためには、URLエンコードする必要があります

import urllib.parse
>>> urllib.parse.quote(<<url>>)

Python 3.xでは、urllib.parse.quoteをインポートする必要があります。

import urllib.parse
urllib.parse.quote(<<url>>)

2
ワイルドカードは2つのジョーカーで動作します
Sreeram Nair

?はワイルドカードとして扱われるため%3f、URLに変換されないと思います。
Sreeram Nair

5
それはpython-sphinxのバグです。
scrapy

リンクされたアドロールドキュメントとスフィンクスの関係は何ですか?
トライフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.