/ / Django एडमिन में सहेजे गए फ़ाइल को नहीं खोल सकता है - django, file, http-status-code-404, admin

Django व्यवस्थापक में सहेजी गई फ़ाइल नहीं खोल सकता - django, फ़ाइल, http-status-code-404, व्यवस्थापक

मैं अपने किसी मॉडल में Django व्यवस्थापक के माध्यम से एक फ़ाइल को सफलतापूर्वक सहेज सकता हूं, लेकिन फ़ाइल aftewards को नहीं खोल सकता। यहाँ मेरा मॉडल है:

class Answer (models.Model):
answer = models.CharField(max_length=1000)
attach_file = models.FileField(upload_to="Attachments", blank=True)

मैंने सेटिंग फ़ाइल को नहीं छुआ है और मेरी समझ से इसे डिफ़ॉल्ट मानों का उपयोग करना चाहिए:

MEDIA_ROOT = ""
MEDIA_URL = ""
STATIC_ROOT = ""

मैंने मॉडल को admin.py में पंजीकृत किया और मैं किसी फ़ाइल को ब्राउज़ करने और उसे सहेजने में सक्षम था। जब उस फ़ाइल को खोलने की कोशिश की जा रही है, तो मुझे:

Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/businessui/answer/1/Attachments/outlook.png/
answer object with primary key u"1/Attachments/outlook.png" does not exist.

क्या कोई इंगित कर सकता है कि मैं यहाँ क्या याद कर रहा हूँ जो मेरी देव मशीन पर स्थानीय रूप से सहेजी गई फ़ाइलों को खोलने में सक्षम है?

उत्तर:

जवाब के लिए 2 № 1

@RicardoCarmo के उत्तर पर @Sawwy की टिप्पणी के संदर्भ में। मैं प्रारूपण के लिए एक उत्तर के रूप में पोस्ट करता हूं।

यहाँ मैं अपने मुख्य url conf में क्या उपयोग करता हूँ:

if getattr(settings, "DEBUG", False) or getattr(settings, "DEBUG_MEDIA", False):
media_url = getattr(settings, "MEDIA_URL", "/media/").lstrip("/")
urlpatterns = patterns("",
url(r"^%s(?P<path>.*)$" % (media_url,), "django.views.static.serve", {
"document_root": settings.MEDIA_ROOT
}),
) + urlpatterns

ध्यान दें कि उत्पादन वातावरण में, आपकी मीडिया फ़ाइलों को वेब सर्वर द्वारा सेवा दी जानी चाहिए और वे अनुरोध Django तक नहीं पहुंचने चाहिए। यही कारण है कि यह योग्य है if DEBUG or DEBUG_MEDIA.


जवाब के लिए 5 № 2

अपनी सेटिंग्स को इस तरह सेट करने का प्रयास करें:

import os
PROJECT_ROOT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))

MEDIA_ROOT = os.path.join(PROJECT_ROOT_PATH, "media/")
MEDIA_URL = "/media/"

इसलिए, अपनी फ़ाइल को इसमें प्राप्त करने का प्रयास करें:

http://127.0.0.1:8000/media/Attachments/outlook.png