ฉันกำลังทำงานกับแอป Django ขนาดใหญ่ซึ่งส่วนใหญ่ต้องใช้การเข้าสู่ระบบเพื่อเข้าถึง ซึ่งหมายความว่าทั้งหมดในแอปของเราเราได้โรย:
@login_required
def view(...):
ไม่เป็นไรและใช้งานได้ดีตราบใดที่เราอย่าลืมเพิ่มเข้าไปทุกที่ ! น่าเศร้าที่บางครั้งเราลืมไปและความล้มเหลวมักไม่ปรากฏให้เห็นอย่างชัดเจน หากลิงก์เดียวไปยังข้อมูลพร็อพเพอร์ตี้อยู่ในหน้า @login_required คุณจะไม่สังเกตเห็นว่าคุณสามารถเข้าถึงมุมมองนั้นได้โดยไม่ต้องเข้าสู่ระบบ แต่ผู้ไม่หวังดีอาจสังเกตเห็นซึ่งเป็นปัญหา
ความคิดของฉันคือการย้อนกลับระบบ แทนที่จะต้องพิมพ์ @login_required ทุกที่ แต่ฉันต้องการ:
@public
def public_view(...):
เพียงเพื่อสิ่งสาธารณะ ฉันพยายามใช้สิ่งนี้กับมิดเดิลแวร์บางตัวและดูเหมือนจะไม่สามารถใช้งานได้ ทุกสิ่งที่ฉันพยายามโต้ตอบกับมิดเดิลแวร์อื่น ๆ ที่เราใช้ไม่ดีฉันคิดว่า ต่อไปฉันลองเขียนบางอย่างเพื่อสำรวจรูปแบบ URL เพื่อตรวจสอบว่าทุกสิ่งที่ไม่ใช่ @ สาธารณะถูกทำเครื่องหมายเป็น @login_required อย่างน้อยเราก็จะได้รับข้อผิดพลาดอย่างรวดเร็วหากเราลืมบางสิ่ง แต่แล้วฉันก็คิดไม่ออกว่าจะบอกได้อย่างไรว่า @login_required ถูกนำไปใช้กับมุมมอง ...
แล้ววิธีที่ถูกต้องคืออะไร? ขอบคุณสำหรับความช่วยเหลือ!