2013-05-13 4 views
6

मैं दो दिनों के लिए काम कर रहा django-allauth पाने की कोशिश कर रहा हूं और अंततः मुझे पता चला कि क्या हो रहा था।Django-allauth गलत base.html टेम्पलेट लोड करता है

dzango-allauth के साथ स्थापित base.html टेम्पलेट को लोड करने के बजाय, ऐप base.html फ़ाइल लोड करता है जिसे मैं अपनी बाकी की वेबसाइट के लिए उपयोग करता हूं।

मैं अपने project/template निर्देशिका के बजाय virtualenv/lib/python2.7/sitepackages/django-allauth निर्देशिका में base.html टेम्पलेट का उपयोग करने के लिए django-allauth कैसे कहूं?

उत्तर

6

जब तक सीधे कॉल नहीं किया जाता है, तो आपके base.html आपके द्वारा परिभाषित टेम्पलेट का एक विस्तार है।

उदाहरण के लिए, यदि आप Page.html नामक एक टेम्पलेट प्रस्तुत करते हैं - तो आपके पास {% extends "base.html" %} होगा। जो, अपने विवरण से, project/template के रूप में परिभाषित किया गया है -

जब ऊपर परिभाषित, base.html पथ है कि आप अपने settings.pyTEMPLATE_DIRS =() के तहत में परिभाषित किया गया में स्थित है।

आपका सबसे अच्छा शर्त, परिभाषित TEMPLATE_DIRS स्थान पर Django-allauth base.html फ़ाइल की प्रतिलिपि allauthbase.html लिए इसका नाम बदलना है, तो अपने टेम्पलेट्स का विस्तार यह {% extends "allauthbase.html" %} के माध्यम से आपकी डिफ़ॉल्ट आधार के बजाय शामिल करने के लिए है।

वैकल्पिक रूप से आप project/template/allauth जैसे अपने टेम्पलेट स्थान पर एक सबफ़ोल्डर जोड़ सकते हैं, वहां allauth base.html रखें, और फिर {% extends "allauth/base.html" %} का उपयोग करें।

2

दो साल बाद यह एक समस्या बनी हुई है और स्वीकृत उत्तर में कुछ नई जानकारी गुम है।

github पर मैंने पाया कि सभी allauth टेम्पलेट्स base.html से प्राप्त खाते/base.html से प्राप्त होते हैं। मेरे समाधान किया गया था:

  • virtualenv/lib/python2.7/sitepackages/django-allauth/templates में, base.html की नकल संपूर्ण सामग्री account/base.html में सब कुछ को बदलने के लिए (अर्थात {% extends 'base.html' %} बयान की जगह)
  • हटाएँ allauth base.html है। अब यह अनावश्यक है।

हो गया!

+1

नाम बदलने जब तक आप एक और मशीन ... – Mark

+0

यह सच है पर अपनी परियोजना स्थापित करने के लिए कर रहे हैं। मैं उस समय ऐसी चीजों को समझ नहीं पाया था – ZG101

0

django-allauth टेम्पलेट्स account/base.html (example) का विस्तार करने, जो base.html फैली लगते हैं।

इसलिए उदाहरण myapp/templates/account/base.html के लिए करने के लिए base.html कॉपी, और सुनिश्चित करें कि इससे पहले कि myapp भार django-allauth (INSTALLED_APPS में यह उच्च रख कर)।

अब django auth टेम्पलेट्स आपके account/base.html का विस्तार करेगा, जो django-allauthbase.html होगा।

यह सही नहीं है, क्योंकि django-allauth के base.html अपडेट हो सकते हैं और आप उन अपडेट को याद करेंगे। लेकिन यह आपके सभी आयातों का नाम बदलने या django-allauth कोड बदलने से बेहतर लगता है।

ध्यान दें कि आप भी सिर्फ एक {% block content %} अपने base.html में सामग्री के आसपास रख सकते हैं, और फिर django-allauth कि शैली है, जो कई मामलों में एक अच्छी बात की तरह लगता है का उपयोग करेगा।

0

Allauthmyproject/templates/base.html का विस्तार करने का प्रयास करता है। सबसे आसान तरीकों क्रम में myproject/templates/site/ को base.html ले जाने myproject/templates/site/base.html पाने के लिए या बस base.html

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