ทำไมไฟล์ html ที่แปลงจากไฟล์ rst ที่มีเครื่องหมายคำถามไม่สามารถแสดงบนเบราว์เซอร์เมื่อคลิกแคตตาล็อก


14

โปรดดาวน์โหลดไฟล์simple.7zและติดตั้งในสฟิงซ์ของคุณเพื่อทำซ้ำปัญหาที่ฉันอธิบายไว้ที่นี่เพื่อทำซ้ำคุณสามารถเรียกใช้:

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

หนึ่งที่มีอยู่ในนั้นอีกไม่ได้มี? ?happend 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> สร้าง html </code> ปัญหาที่ 1:
เหตุใด firefox จึงแสดงรายการทั้งหมดตามWhat does “_” in Python mean in a for-loop? หมายเหตุ: "_"รวมเข้า“_”ด้วยกัน;
ชื่อที่ไม่มี?เช่นที่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

ไม่พบ url บนเซิร์ฟเวอร์นี้เมื่อคลิกชื่อแรก หากต้องการคลิกที่ชื่อที่สองWhat does “_” in Python mean in a for-loop?ก็ใช้งานได้ดี ทำงานได้ดีเมื่อคลิกชื่อที่สอง

โปรดให้คำอธิบายเกี่ยวกับปัญหาของฉัน


1
โปรดแสดงข้อความที่จัดทำใหม่ของคุณซึ่งสฟิงซ์สร้าง HTML นี้ขึ้นมา
Steve Piercy

print(“Hello”)??? คุณต้องปิดคำพูด "ฉลาด"
kthy

คำตอบ:


6

ปัญหาที่ 1ไม่ใช่ปัญหาจริงมันเป็นพฤติกรรมปกติของสฟิงซ์: ชื่อที่ปรากฏไม่ใช่ชื่อไฟล์ แต่เป็นชื่อระดับบนสุดของเอกสาร ResT ซึ่งจบลงด้วยเครื่องหมายคำถามทั้งสองกรณี ดูสารบัญ > .. toctree :: > รายการส่วนหนึ่งของหน้านี้ซึ่งสหรัฐฯ:

ชื่อเอกสารใน toctree จะถูกอ่านโดยอัตโนมัติจากชื่อของเอกสารอ้างอิง

หากคุณต้องการมั่นใจเพียงแค่เปลี่ยนหัวเรื่องของเอกสารใด ๆ สร้าง HTML ใหม่และดู


ปัญหาที่ 2เกิดจากการมีเครื่องหมายคำถามที่ไม่ใช่ urlencoded อยู่ในhrefลิงก์ ใน URL, เครื่องหมายคำถามหมายถึงการเริ่มต้นของการเป็นสตริงแบบสอบถาม

ที่พยายามเข้าถึงWhat does "_" in Python mean in a for-loop?.htmlหมายถึงการร้องขอWhat does "_" in Python mean in a for-loopเอกสาร HTML โดยให้.htmlพารามิเตอร์ และแน่นอนไม่พบเอกสารที่ร้องขอเนื่องจากไม่มีอยู่

ในแถบที่อยู่ของเบราว์เซอร์คุณสามารถแทนที่เครื่องหมายคำถามด้วยรูปแบบ urlencoded %3Fและสังเกตว่ามันใช้งานได้แล้ว

ฉันไม่พบวิธีที่จะทำให้สฟิงซ์โดยอัตโนมัติ urlencode ชื่อเอกสารในลิงค์href( อันที่จริงถือว่าเป็นข้อผิดพลาด ) หรือเอกสารใด ๆ อย่างชัดเจนแสดงข้อ จำกัด การตั้งชื่อสำหรับเอกสาร ResT

แต่ฉันรู้จากประสบการณ์ที่ตั้งชื่อไฟล์ที่มีเครื่องหมายวรรคตอนมักจะเป็นแหล่งที่มาของปัญหา ฉันจะแนะนำให้คุณเปลี่ยนชื่อเอกสารของคุณกับตัวละครที่แปลกใหม่น้อย (slugify พวกเขา) การตั้งชื่อเอกสาร ResT underscore_in_for_loop.rstแทนWhat does "_" in Python mean in a for-loop?.rstจะช่วยให้คุณประหยัดเวลาและปวดหัวได้มาก

และโปรดจำไว้ว่ามันไม่ควรเป็นปัญหาเนื่องจากอย่างที่เราเห็นในฉบับแรกชื่อเอกสารนั้นจะใช้สำหรับ URL เท่านั้น


4

?เป็นตัวแทนสำหรับการจับคู่คำใน URL และด้วยเหตุนี้จะถือว่าเป็นอักขระพิเศษ

ไวลด์การ์ดใช้งานได้กับนักเลงสองประเภท:

  ? - 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
wildcardทำงานร่วมกับ 2 นักเลง
Sreeram Nair

ฉันคิดว่า?มันถูกใช้เป็นสัญลักษณ์แทนและด้วยเหตุนี้มันจึงไม่แปลง%3fเป็น URL
Sreeram Nair

5
มันเป็นข้อผิดพลาดสำหรับ python-sphinx แล้ว
scrapy

ความสัมพันธ์ระหว่างเอกสาร adroll ที่เชื่อมโยงกับสฟิงซ์คืออะไร ...
Tryph
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.