2010-09-21 21 views
32

मैंने पिछले कुछ घंटों से इस पर अपना सिर टक्कर लगी है। मैं नहीं मिल सकता है {{MEDIA_URL}} अपDjango {{MEDIA_URL}} खाली @DEPRECATED

settings.py

.. 
MEDIA_URL = 'http://10.10.0.106/ame/' 
.. 
TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth", 
    "django.core.context_processors.media", 
) 
.. 
मेरे विचार में

में

दिखाने के लिए मैं

from django.shortcuts import render_to_response, get_object_or_404 
from ame.Question.models import Question 

def latest(request): 
    Question_latest_ten = Question.objects.all().order_by('pub_date')[:10] 
    p = get_object_or_404(Question_latest_ten) 
    return render_to_response('Question/latest.html', {'latest': p}) 

है तो मैं एक base.html और प्रश्न/है नवीनतम.html

{% extends 'base.html' %} 
<img class="hl" src="{{ MEDIA_URL }}/images/avatar.jpg" /></a> 

लेकिन MEDIA_URL खाली दिखाई देता है, मैंने सोचा कि यह काम करने का अनुमान है लेकिन शायद मैं गलत हूँ।

अद्यतन नवीनतम संस्करण इन समस्याओं को हल करता है।

उत्तर

22

जोड़ा जा रहा है मीडिया टेम्पलेट संदर्भ प्रोसेसर भी काम किया

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.request", 
    "django.contrib.auth.context_processors.auth", 
    "django.core.context_processors.media", 
    "django.core.context_processors.static", 
) 
+1

हां यह तब था जब यह 1.2 या 1.3 जैसा था। आपकी विधि अब सही तरीका है। इसके अलावा स्थिति और मीडिया के बीच अलगाव भी स्पष्ट नहीं थे। – Atherion

+1

यह स्वीकार्य उत्तर होना चाहिए।Django 1.8 में एक आकर्षण की तरह काम करता है। – Leistungsabfall

+0

हाँ, धन्यवाद। AJAX पर दिखाने के लिए एक छवि प्राप्त करने की कोशिश कर मेरे बालों को फाड़ कर दिया गया ... –

30

संदर्भ प्रोसेसर को संसाधित करने के लिए आपको render_to_response में RequestContext जोड़ने की आवश्यकता है।

आपके मामले में:

from django.template.context import RequestContext 

context = {'latest': p} 
render_to_response('Question/latest.html', 
        context_instance=RequestContext(request, context)) 

docs से:

context_instance

संदर्भ उदाहरण के साथ टेम्पलेट रेंडर करने के लिए। डिफ़ॉल्ट रूप से, टेम्पलेट को को एक संदर्भ उदाहरण के साथ प्रस्तुत किया जाएगा ( शब्दकोश से मूल्यों से भरा)। यदि आपको संदर्भ प्रोसेसर का उपयोग करने के लिए की आवश्यकता है, तो टेम्पलेट को इसके बजाय RequestContext इंस्टेंस के साथ प्रस्तुत करें।

+4

एए धन्यवाद, मुझे लगता है कि उन्हें django से शुरू होने वाले लोगों के लिए बेहतर तरीके से इंगित करने की आवश्यकता है। MEDIA_URL डिज़ाइन के साथ-साथ पोर्टेबिलिटी के लिए काफी महत्वपूर्ण है। – Atherion

2

तुम भी direct_to_template उपयोग कर सकते हैं:

from django.views.generic.simple import direct_to_template 
... 
return direct_to_template(request, 'Question/latest.html', {'latest': p}) 
+0

यह वही काम करेगा जैसे 'render_to_response (' Question/latest.html ', context_instance = RequestContext (अनुरोध, संदर्भ))'? –

2

इसके अलावा ऊपर प्रदान सवाल का photologue आवेदन पर एक नज़र लेने के लिए सुझाव है कि कर सकते हैं। यह आपको टेम्पलेट फ़ाइलों में सीधे लिंक से बचने और इसके बजाय ऑब्जेक्ट्स का उपयोग करने में मदद कर सकता है। Django 1.10 उपयोगकर्ताओं के लिए, दोनों मीडिया और स्थिर संदर्भ प्रोसेसर पहले से ही Django में ले जाया जाता है: F.ex .:

<img src="{{ artist.photo.get_face_photo_url }}" alt="{{ artist.photo.title }}"/> 
संबंधित मुद्दे