2011-09-19 12 views
12

मैं इस तरह के पार्सिंग के लिए टेम्पलेट के भीतर से वर्तमान Site प्राप्त करने की कोशिश कर रहा हूं:क्या वर्तमान साइट टेम्पलेट से सुलभ है?

<h3>{{ site.name }}</h3> 

दुर्भाग्यवश, यह कुछ भी नहीं ला रहा है।

क्या टेम्पलेट से वर्तमान साइट तक पहुंच प्राप्त करने का कोई तरीका है?

उत्तर

25

आपके प्रश्न का शीर्षक मानता है कि "दृश्य" और "टेम्पलेट" अदला-बदले जाने योग्य हैं - वे नहीं हैं। टेम्पलेट में वर्तमान साइट प्राप्त करने के लिए, इसे उस संदर्भ में जोड़ा जाना चाहिए जिसका उपयोग टेम्पलेट को प्रस्तुत करने के लिए किया जाता है। यदि आप RequestContext का उपयोग कर रहे हैं, तो आप इसे स्वचालित रूप से करने के लिए एक संदर्भ प्रोसेसर लिख सकते हैं। तब

from django.contrib.sites.models import Site 

def site_processor(request): 
    return { 'site': Site.objects.get_current() } 

, यह आपके TEMPLATE_CONTEXT_PROCESSORS में जोड़ने के लिए, और इसलिए की तरह उपयोग: अजीब तरह से

<h3>{{ site.name }}</h3> 
+0

मैं 'django.views.generic.simple.direct_to_template' उपयोग कर रहा हूँ मदद की, तो मैं, कवर किया जाना चाहिए ना? इसके लिए एक अंतर्निहित संदर्भ प्रोसेसर नहीं है? –

+0

हां, 'direct_to_template' 'RequestContext' का उपयोग करता है, हालांकि आपको अपना स्वयं का संदर्भ प्रोसेसर लिखना होगा क्योंकि Django में कोई भी नहीं है। वैकल्पिक रूप से आप 'direct_to_template' पर एक तर्क पारित कर सकते हैं जो वर्तमान साइट को संदर्भ में जोड़ता है। –

+0

'साइट' के बजाय 'site_processor' नामक फ़ंक्शन क्यों है? –

0

, bradleyayers प्रोसेसर का उपयोग

आप एक संदर्भ प्रोसेसर इसलिए की तरह यह करने के लिए लिख सकते हैं नल परिणाम दिए, इसलिए साइट ढांचे का उपयोग करने के बजाय, मैंने अनुरोध के अंदर पैरामीटर का उपयोग किया।

तो प्रोसेसर कि तरह दिखेगा:

def host_processor(request): 
    return { 'host': request.get_host() } 

आशा है कि यह

संबंधित मुद्दे