2014-10-28 11 views
5

मैं Django 1.7 में कोई भी HTML पृष्ठ प्रस्तुत करने में सक्षम नहीं हूं। मेरे 'index.html' 'project/seatalloc/templates/index.html' में है और project/seatalloc/views.py में मेरी view.py लगता है:Django टेम्पलेट त्रुटि मौजूद नहीं है, हालांकि यह 'फ़ाइल मौजूद है'

TEMPLATE_DIRS = (
    '/Users/Palak/Desktop/academics/sem3/cs251/lab11/project/seatalloc/templates', 

) 

urls.py:

def index(request): 
     return render(request, 'index.html', dirs=('templates',)) 

परियोजना/परियोजना/settings.py टेम्पलेट्स dirs सेट है :

urlpatterns = patterns('', 
    url(r'^seatalloc/', include('seatalloc.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
) 

Template loader

मैं दस्तावेज़ का पालन करने की कोशिश की है सख्ती से स्मारक, फिर भी पता नहीं लगा सकता है कि Django फ़ाइल का पता लगाता है, मैं टेम्पलेट DoesNotExist/seatalloc/त्रुटि पर क्यों प्राप्त कर रहा हूं। मैं Django के लिए नया हूँ, कृपया कोई मदद कर सकता है।

+0

ऐसा लगता है कि 'setalloc' एक ऐप है। आपको वास्तव में इसके टेम्पलेट्स के बारे में 'template_dirs' बताने की आवश्यकता नहीं है, क्योंकि आप जिस पंक्ति को हाइलाइट करते हैं, उसके नीचे आप देख सकते हैं, यह पहले से ही ऐप निर्देशिका लोडर द्वारा पाया गया है। 'template_dirs' गैर-ऐप टेम्पलेट्स के लिए है, आमतौर पर प्रोजेक्ट रूट में स्थित है, न कि ऐप में। – Ngenator

+0

मुझे समस्या का पता चला: यूआरएल जो मैं पहले प्रदान कर रहा था वह यूआरएल (आर '^ $', विचार.इंडेक्स, नाम = 'इंडेक्स') था, मैंने इसे यूआरएल में बदल दिया (आर '^ इंडेक्स $', views.इंडेक्स, नाम = 'अनुक्रमणिका'), यह + टेम्पलेट_dir को प्रोजेक्ट रूट पर ले जाने से हल हो गया। –

उत्तर

2

इस तरह की कोशिश करो,

import os 
BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 
TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'templates/'), 
) 
+0

की सहायता के लिए धन्यवाद सभी को PROJECT_ROOT कहां परिभाषित करना चाहिए। सेटिंग.py में इसे परिभाषित करने से मुझे अमान्य वाक्यविन्यास –

+0

@code_enthu अपडेट किया गया –

+1

1.8 से बहिष्कृत: https://docs.djangoproject.com/en/1.8/ref/settings/#template-dirs – Wtower

-1

सबसे पहले settings.py में टेम्पलेट dirs में स्थिर पथ (फिक्स्ड पथ) का उपयोग नहीं करते, उपयोग:

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 

TEMPLATE_DIRS = (
     BASE_DIR +'/Templates', 


) 

और टेम्पलेट निर्देशिका होना चाहिए प्रोजेक्ट निर्देशिका में यानी जिसमें manage.py फ़ाइल मौजूद है।

और view.py में render के बजाय render_to_response का उपयोग करें।

return render_to_response("index.html") 
+0

धन्यवाद! वास्तव में मैंने अपने सेटिंग्स.py से पूरे TEMPLATE_DIRS (..) कोड को हटा दिया। समस्या टेम्पलेट निर्देशिका के पथ के साथ थी। इसे परियोजना डीआईआर में डालने के बाद, चीजें –

+0

काम करती हैं अरे, आपने जो सुझाव दिया है वह index.html पृष्ठ के लिए काम करता है, उदाहरण के लिए: http: //127.0.0.1: 8000/seatalloc/लेकिन किसी के लिए अन्य पृष्ठ http://127.0.0.1:8000/seatalloc/index या http://127.0.0.1:8000/seatalloc/detail यह 404 त्रुटि प्रदर्शित करता है। सभी .html फ़ाइलें एक ही निर्देशिका में –

+3

-1 हैं जो नए रेंडर पर एक पुराने render_to_response o की सिफारिश करने के लिए हैं। –

27

है - अपने मामले में के रूप में - आप एक TemplateDoesNotExist त्रुटि और डिबग पेज राज्यों "फाइल मौजूद है" विचाराधीन टेम्प्लेट के बगल में मिलता है यह आम तौर पर (? हमेशा) का अर्थ है इस टेम्पलेट कर सकते हैं कि एक और टेम्पलेट को संदर्भित करता है ' टी नहीं मिला।

आपके मामले में, index.html में एक कथन ({% extends %}, {% include %}, ...) शामिल है जो किसी अन्य टेम्पलेट का जिक्र नहीं कर रहा है। दुर्भाग्यवश, Django 1.8.3 के रूप में, डीबग पेज हमेशा आधार टेम्पलेट का नाम देता है, न कि Django को नहीं मिल सकता है।

+0

+1 साझा करें, इससे मुझे मदद मिली। "TemplateDoesNotExist त्रुटि" index.html पर मौजूद थी जो अस्तित्व में थी लेकिन आधार द्वारा बढ़ाया गया था।एचटीएमएल जिसमें लापता टेम्पलेट के लिए शामिल था। दिलचस्प नोट, "TemplateDoesNotExist त्रुटि" तब तक प्रकट नहीं हुई जब तक मैंने व्यवस्थापक में लॉग इन नहीं किया और साइट को देखने का प्रयास किया क्योंकि गायब शामिल लॉगिन से संबंधित था। – curtisp

+0

इसके लिए नहीं तो इसे हल नहीं किया जा सका! धन्यवाद – ketanbhatt

+0

यह मुद्दा था! धन्यवाद – guinunez

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