NoReverseMatch
ข้อผิดพลาดจะบอกว่า Django ไม่สามารถหารูปแบบการจับคู่ URL สำหรับ URL ที่คุณได้ให้ในใด ๆ ของ URL ที่ติดตั้งแอปของคุณ
ข้อยกเว้น NoReverseMatch ถูกยกขึ้นโดย django.core.urlresolvers เมื่อไม่สามารถระบุ URL ที่ตรงกันใน URLconf ของคุณตามพารามิเตอร์ที่ให้มา
ในการเริ่มต้นการดีบักคุณต้องเริ่มต้นด้วยการตัดข้อความแสดงข้อผิดพลาดที่ให้ไว้กับคุณ
NoReverseMatch ที่ / my_url /
นี่คือ url ที่กำลังแสดงผลเป็น url ที่แอปพลิเคชันของคุณพยายามเข้าถึงอยู่ในขณะนี้ แต่มี url ที่ไม่สามารถจับคู่ได้
ย้อนกลับสำหรับ 'my_url_name'
นี่คือชื่อของ url ที่ไม่สามารถค้นหาได้
ด้วยอาร์กิวเมนต์ '()' และ
นี่คืออาร์กิวเมนต์ที่ไม่ใช่คีย์เวิร์ดซึ่งมีให้กับ url
ไม่พบอาร์กิวเมนต์คำหลัก "{}"
นี่คืออาร์กิวเมนต์คำหลักที่ให้ไว้ใน url
n รูปแบบที่พยายาม: []
นี่คือรูปแบบที่สามารถพบได้ในไฟล์ urls.py ของคุณที่พยายามจับคู่
เริ่มต้นด้วยการค้นหารหัสในแหล่งที่มาของคุณที่เกี่ยวข้องกับ url ที่กำลังแสดงอยู่ - URL มุมมองและเทมเพลตที่เกี่ยวข้อง ในกรณีส่วนใหญ่จะเป็นส่วนหนึ่งของโค้ดที่คุณกำลังพัฒนาอยู่
เมื่อคุณทำเสร็จแล้วให้อ่านโค้ดตามลำดับที่ django จะติดตามจนกว่าคุณจะไปถึงบรรทัดของโค้ดที่พยายามสร้าง url สำหรับmy_url_name
ไฟล์. อีกครั้งนี่อาจอยู่ในสถานที่ที่คุณเพิ่งเปลี่ยนไป
เมื่อคุณพบว่าเกิดข้อผิดพลาดแล้วให้ใช้ส่วนอื่น ๆ ของข้อความแสดงข้อผิดพลาดเพื่อแก้ไขปัญหา
ชื่อ URL
- มีพิมพ์ผิดหรือเปล่า
- คุณได้ระบุ url ที่คุณพยายามเข้าถึงชื่อนี้หรือไม่?
- หากคุณตั้ง app_name ไว้ใน
urls.py
(เช่นapp_name = 'my_app'
) ของแอปหรือหากคุณรวมแอปด้วยเนมสเปซ (เช่นinclude('myapp.urls', namespace='myapp')
คุณต้องรวมเนมสเปซเมื่อย้อนกลับเช่น{% url 'myapp:my_url_name' %}
หรือreverse('myapp:my_url_name')
.
อาร์กิวเมนต์และอาร์กิวเมนต์คำหลัก
อาร์กิวเมนต์และอาร์กิวเมนต์คำหลักถูกใช้เพื่อจับคู่กับกลุ่มการดักจับใด ๆ ที่มีอยู่ภายใน URL ที่กำหนดซึ่งสามารถระบุได้โดย()
วงเล็บโดยรอบในรูปแบบ URL
สมมติว่า url ที่คุณจับคู่ต้องการอาร์กิวเมนต์เพิ่มเติมให้ดูในข้อความแสดงข้อผิดพลาดและก่อนอื่นให้ดูว่าค่าของอาร์กิวเมนต์ที่ระบุนั้นถูกต้องหรือไม่
หากไม่ถูกต้อง:
ไม่มีค่าหรือสตริงว่างเปล่า
โดยทั่วไปหมายความว่าค่าที่คุณส่งผ่านไม่มีค่าที่คุณคาดหวัง ดูตำแหน่งที่คุณกำหนดค่าให้ตั้งค่าเบรกพอยต์และคุณจะต้องหาสาเหตุว่าทำไมค่านี้จึงไม่ถูกส่งผ่านอย่างถูกต้อง
อาร์กิวเมนต์คำหลักมีการพิมพ์ผิด
แก้ไขสิ่งนี้ในรูปแบบ url หรือใน url ที่คุณกำลังสร้าง
หากถูกต้อง:
ดีบัก regex
คุณสามารถใช้เว็บไซต์เช่นregexrเพื่อทดสอบได้อย่างรวดเร็วว่ารูปแบบของคุณตรงกับ url ที่คุณคิดว่าคุณกำลังสร้างคัดลอกรูปแบบ url ลงในช่อง regex ที่ด้านบนจากนั้นใช้พื้นที่ข้อความเพื่อรวม url ที่คุณคิดว่าเป็น ควรจับคู่กับ
ข้อผิดพลาดทั่วไป:
จับคู่กับ.
อักขระตัวแทนหรืออักขระ regex อื่น ๆ
อย่าลืมหลีกเลี่ยงอักขระเฉพาะด้วย\
คำนำหน้า
จับคู่เฉพาะกับอักขระตัวพิมพ์เล็ก / ใหญ่
ลองใช้อย่างใดอย่างหนึ่งa-Z
หรือ\w
แทนa-z
หรือA-Z
ตรวจสอบว่ารูปแบบที่คุณจับคู่นั้นรวมอยู่ในรูปแบบที่พยายาม
หากไม่ได้อยู่ที่นี่อาจเป็นไปได้ว่าคุณลืมรวมแอพของคุณไว้ในการINSTALLED_APPS
ตั้งค่า (หรือINSTALLED_APPS
อาจต้องดูลำดับของแอพภายใน)
เวอร์ชัน Django
ใน Django 1.10 ความสามารถในการย้อนกลับ url โดยพา ธ python ถูกลบออก ควรใช้เส้นทางที่ตั้งชื่อแทน
หากคุณยังไม่สามารถติดตามปัญหาได้โปรดอย่าลังเลที่จะถามคำถามใหม่ซึ่งรวมถึงสิ่งที่คุณได้ลองสิ่งที่คุณค้นคว้า (คุณสามารถเชื่อมโยงไปยังคำถามนี้ได้) จากนั้นใส่รหัสที่เกี่ยวข้องกับ ปัญหา - URL ที่คุณจับคู่รูปแบบ URL ที่เกี่ยวข้องส่วนของข้อความแสดงข้อผิดพลาดที่แสดงสิ่งที่ django พยายามจับคู่และอาจเป็นการINSTALLED_APPS
ตั้งค่าหากมี