2016-02-09 19 views
8

मैं एक django 1.9 प्रोजेक्ट पर काम कर रहा हूं।django 1.9 और पंजीकरण/login.html

Django 1.7.7 के साथ

, लॉगिन functionnalities काम कर रहा था, लेकिन अब हर समय मेरे पास है: registration/login.html : Template Does Not Exist

टेम्पलेट्स login.html, logout.html में मौजूद हैं 'WebGUI/टेम्पलेट/पंजीकरण /' और मैं उन्हें संशोधित नहीं किया।

यहाँ

मेरी settings.py में से कुछ:

INSTALLED_APPS = [ 
'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'webgui', 
] 

MIDDLEWARE_CLASSES = [ 
'django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware', 
] 

ROOT_URLCONF = 'project.urls' 

TEMPLATES = [ 
{ 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': [], 
    'APP_DIRS': True, 
    'OPTIONS': { 
     'context_processors': [ 
      'django.template.context_processors.debug', 
      'django.template.context_processors.request', 
      'django.contrib.auth.context_processors.auth', 
      'django.contrib.messages.context_processors.messages', 
     ], 
    }, 
}, 
] 

DATABASES = { 
'default': { 
    'ENGINE': 'django.db.backends.sqlite3', 
    'NAME': os.path.join(BASE_DIR, 'NCIS.db'), 
} 
} 

STATIC_URL = '/static/' 
LOGIN_REDIRECT_URL = '/login/' 

LOGOUT_URL = '/logout/' 


DIRS = (
    join(BASE_DIR, 'webgui/template/registration'), 
    join(BASE_DIR, 'webgui/template/') 
) 

और मेरे urls.py:

from django.conf.urls import url 
from django.contrib import admin 
from django.contrib.auth.views import login, logout 
import webgui.views 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^$', login, name='login.html'), 
    url(r'^login/$', login, name='login.html'), 
    url(r'^logout/$', logout, name='logout.html'), 

    url(r'^homepage/$', webgui.views.homepage), 
    url(r'^addproject/$', webgui.views.addproject) 
] 

क्या गलत है? मैंने Django दस्तावेज़ों की जांच की, लेकिन यह डिफ़ॉल्ट व्यवहार है।

उत्तर

6

सेटिंग TEMPLATES सेटिंग में अपने टेम्पलेट डीआईआर पथ डालने का प्रयास करें। इसलिए Django INSTALLED_APPS में प्रत्येक अनुप्रयोग के अंदर templates निर्देशिका के लिए खोज, अपने webgui एप्लिकेशन सहित जाएगा (वैसे भी, अपने टेम्पलेट फ़ोल्डर नाम templates नहीं template होना चाहिए।)

TEMPLATES = [ 
{ 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': [join(BASE_DIR, 'webgui/template/registration'),join(BASE_DIR, 'webgui/template/')], 
    'APP_DIRS': True, 
    'OPTIONS': { 
     'context_processors': [ 
      'django.template.context_processors.debug', 
      'django.template.context_processors.request', 
      'django.contrib.auth.context_processors.auth', 
      'django.contrib.messages.context_processors.messages', 
     ], 
    }, 
}, 
] 
+0

मैं 'templates' करने के लिए अपने फ़ोल्डर का नाम बदला, और में पथ जोड़ा' TEMPLATES' सरणी बना सकते हैं है , (भले ही पहले से ही एक डीआईआरएस परिभाषा है ..), और यह काम कर रहा है :) धन्यवाद। – Isador

+2

आपकी सेटिंग्स के नीचे 'डीआईआरएस' सेटिंग का कोई प्रभाव नहीं पड़ता है। Django केवल Django 1.8+ में 'टेम्पलेट्स' 'डीआईआरएस'] देखता है। अब जब आपने अपनी निर्देशिका का नाम बदलकर 'टेम्पलेट्स 'कर दिया है, तो सबसे आसान कॉन्फ़िगरेशन' डीआईआरएस 'सेट करना होगा: []', और सेटिंग्स के नीचे से' डीआईआरएस 'हटा दें। – Alasdair

6

मेरे django को 1.9.1 में अपग्रेड करने के बाद, वही बात मेरे साथ हुई। जाहिर है, टेम्पलेट निर्देशिका पर अद्यतन हैं। यहां बताया गया है कि मैंने इसे कैसे ठीक किया।

TEMPLATES = [ 
{ 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': [os.path.join(BASE_DIR, 'templates')], 
    'APP_DIRS': True, 
    'OPTIONS': { 
     'context_processors': [ 
      'django.template.context_processors.debug', 
      'django.template.context_processors.request', 
      'django.contrib.auth.context_processors.auth', 
      'django.contrib.messages.context_processors.messages', 
     ], 
    }, 
}, 
] 
बेशक आप BASE_DIR होना चाहिए के

परिभाषित

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

उसके बाद, मैं टेम्पलेट्स फ़ोल्डर को हटा चुके हैं और प्रत्येक अनुप्रयोग के लिए एक टेम्पलेट्स फ़ोल्डर बनाया। तो, प्रत्येक ऐप के अंदर, बस टेम्पलेट बनाएं और HTML फ़ाइलों को अंदर रखें।

इसके अलावा, इसे इस तरह की HTML फ़ाइल से कनेक्ट करें।

def index(request): 
context_dict = {} 
return render(request, 'index.html', context_dict) 

यह मेरे लिए काम करता है।

4

आप 'APP_DIRS': True, की स्थापना की है,।

समस्या यह है कि आपने webgui/templates/ के बजाय अपनी निर्देशिका webgui/template/ नामित की है, इसलिए ऐप लोडर इसे नहीं ढूंढ पाएगा।

आपकी निर्देशिका का नाम बदलने का सबसे आसान उपाय है। यदि आप ऐसा नहीं करना चाहते हैं, तो आपको निर्देशिका को अपने DIRS विकल्प में जोड़ना होगा।

2

इस सवाल के लिए registration/login.html : Template Does Not Exist

खोज इंजन के माध्यम आने वालों के लिए

तो खोज के साथ खोज इंजन में पहले प्रकट होता है, कृपया ध्यान दें कि इस टेम्पलेट Django के साथ डिफ़ॉल्ट रूप से नहीं आता।आप इसे नहीं बनाया है, तो यही कारण है कि आपको यह त्रुटि

यहाँ हो रही है कि कैसे आप एक सरल एक https://simpleisbetterthancomplex.com/tutorial/2016/06/27/how-to-use-djangos-built-in-login-system.html

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