หลังจากที่ผู้ใช้อัปโหลดรูปภาพแล้ว เธอจะส่งกลับข้อผิดพลาด 404 เสมอ ฉันคิดว่านี่เป็นการกำหนดค่าที่ผิดพลาดของ Nginx แต่ฉันไม่แน่ใจและหลังจากค้นหาและพยายามหลายชั่วโมง ฉันก็ยังไม่เข้าใจปัญหา
นี่คือ settings.py ของฉัน:
DEBUG = False
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'),
)
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
ถัดไป urls.py ของฉัน:
urlpatterns = [
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
และไฟล์กำหนดค่า Nginx ของฉัน:
location ^/static/ {
autoindex on;
alias /home/user/mywebsite/site/static;
}
location ^/media/ {
alias /home/user/mywebsite/site/media;
}
นี่คือ URL ที่สร้างขึ้นของรูปภาพ: https://www.mywebsite.com/media/CACHE/images/img/venus/758c9f7d70d0c64b5631cc865986de48.jpg (404)
ฉันใช้ Django Imagekit เพื่อจัดการภาพที่อัปโหลด ฉันมักจะพบว่า URL เหล่านี้แปลก ๆ ... บางที ImageKit อาจจำเป็นต้องมีการกำหนดค่าเพิ่มเติมเพิ่มเติมหรือไม่
ไดเร็กทอรีสแตติกและสื่อของฉันอยู่ใน /mainappdjango/static ไม่ใช่ในไดเร็กทอรีราก หากฉันไม่ทำอย่างนั้น แสดงว่าสแตติกของฉันไม่ได้โหลด รูปภาพได้รับการอัปโหลดอย่างดีบนเซิร์ฟเวอร์ (ฉันสามารถเข้าถึงได้ด้วย FTP หรือ SSH)
คุณมีความคิดเกี่ยวกับปัญหาที่ทำให้เกิดข้อผิดพลาด 404 เหล่านี้หรือไม่ :/
ขอบคุณมาก!
/mainappdjango/static/media
แต่ nginx กำลังชี้ไปที่mywebsite/site/media
และคุณไม่ควรมี URL สื่อใด ๆ ใน urls.py ของคุณ แอป Django ของคุณไม่ให้บริการไฟล์มีเดีย - person dirkgroten   schedule 21.09.2018pwd
เพื่อแสดงเส้นทางแบบเต็ม อย่างไรก็ตาม นั่นคือเส้นทางที่ nginx ต้องการ - person dirkgroten   schedule 22.09.2018if settings.DEBUG
เพื่อไม่ให้ใช้สำหรับการผลิต MEDIA_ROOT ของคุณสามารถอยู่นอกไดเรกทอรีโครงการของคุณได้ ไม่มีปัญหา ใช้งานได้กับท้องถิ่นrunserver
- person dirkgroten   schedule 22.09.2018