2012-08-28 21 views
7

मुझे एक बहुत ही अजीब त्रुटि का सामना करना पड़ रहा है।टेम्पलेट्स में Django settings.py चर

CARDSPRING_APP_ID = '################' 

यह मेरी साइट में लगभग हर पृष्ठ पर काम करता है, एक को छोड़कर: मैं किसी ऐप्लिकेशन आईडी इसलिए की तरह मेरे settings.py फाइल में परिभाषित किया है। आश्चर्यजनक रूप से पर्याप्त, अन्य चर काम करते हैं।

alert("cs appid=" + {{ CARDSPRING_APP_ID }} + 
" sectoken=" + {{ securityToken }} + 
" timestamp= " +{{ timestamp }} + 
" hash = " + {{ digestedHash }} + 
" ccnum " + $('.card-number').val() + 
" exp" + $('.expiration-month').val() + $('.expiration-year').val() + 
" user = " + {{ csid }}); 

जब पेज प्रदान की गई है, यह इस

alert("cs appid=" + + 
" sectoken=" + DDFJRMZXD12WVWHFFC###### + 
" timestamp= " +1346183125 + 
" hash = " + a929b3aec9179c700c09d###### + 
" ccnum " + $('.card-number').val() + 
" exp" + $('.expiration-month').val() + $('.expiration-year').val() + 
" user = " + SG1###); 

महत्वपूर्ण बात, {{ CARDSPRING_APP_ID }} कुछ भी नहीं करने के लिए मूल्यांकन कर ले पर मूल्यांकन करता है: पृष्ठ पर एक स्क्रिप्ट अनुभाग में, मैं निम्नलिखित है। क्या किसी को पता है कि यह मामला क्यों हो सकता है? धन्यवाद!

अद्यतन

मैं नीचे जवाब में वर्णित के रूप में एक context_processors.py फ़ाइल बनाने की कोशिश की, और settings.py में उचित स्थान में जोड़ने के लिए सुनिश्चित किया। मैं अभी भी किसी भी भाग्य की जरूरत नहीं है - यह एक पृष्ठ पर है, लेकिन पर नहीं अन्य

अद्यतन 2

टेम्पलेट इस आदेश के साथ कहा जाता है का मूल्यांकन करता है:

return render_to_response('howto'+str(number)+'.html',locals(),context_instance= RequestContext(request)) 

अद्यतन 3 यह काम करने के लिए ही मिला है - मेरी settings.py में जोड़ने के लिए की जरूरत

TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
    "myapp.context_processors.cardspring", 
) 
+1

क्या आपके पास एक संदर्भ प्रोसेसर है जो टेम्पलेट्स में 'CARDSPRING_APP_ID' ​​का मान देता है? –

+0

मुझे यकीन नहीं है - मैं कैसे जांचूँगा? मुझे पता है कि 'CARDSPRING_APP_ID' ​​साइट पर अन्य पृष्ठों पर उचित रूप से मूल्यांकन करता है, बस इस पर नहीं – mythander889

+0

फिर आप उन पृष्ठों पर' CARDSPRING_APP_ID' ​​कैसे पास करते हैं? किसी भी संदर्भ प्रोसेसर के रूप में इसे जोड़ना बेहतर हो सकता है क्योंकि यह स्वचालित रूप से सभी पृष्ठों पर जोड़ता है। –

उत्तर

8

एक फ़ाइल context_processors.py बुलाया बनाएँ और निम्न संदर्भ प्रोसेसर लिखें:

from django.conf import settings 

def cardspring(request): 
    return { 'CARDSPRING_APP_ID': settings.CARDSPRING_APP_ID } 

फिर अपने Django सेटिंग्स फ़ाइल, जहां your.location अपने context_processors.py फ़ाइल का स्थान है में TEMPLATE_CONTEXT_PROCESSORS को your.location.context_processors.cardspring जोड़ें।

+0

अब मैं 'settings.py' में देख रहा हूं, लेकिन' TEMPLATE_CONTEXT_PROCESSORS 'नहीं देख रहा हूं। क्या मुझे यह जोड़ना चाहिए? – mythander889

+0

@ mythander889: हाँ, यदि यह वहां नहीं है तो आपको इसे जोड़ना चाहिए। सुनिश्चित करें कि आप डिफ़ॉल्ट मान भी जोड़ते हैं (https://docs.djangoproject.com/en/1.4/ref/settings/#template-context-processors देखें) और फिर अपना स्वयं का संदर्भ प्रोसेसर जोड़ें। –

+0

मैंने इसे यहां जोड़ा है जैसा आपने वर्णन किया है [यहां] (http://www.b-list.org/weblog/2006/jun/14/django-tips-template-context-processors/), लेकिन अभी भी कोई भाग्य नहीं है। क्या मुझे कुछ HTML फ़ाइल में शामिल करना है?यही एकमात्र चीज है जिसके बारे में मैं सोच सकता हूं कि अलग-अलग – mythander889