2014-09-23 10 views
8

संशोधित नहीं कर सकता मैं django आराम ढांचे का उपयोग कर रहा हूं, और जैसा कि यहां वर्णित है: django rest framework doc मैंने अपने टेम्पलेट्स में /rest_framework/api.html जोड़ा है।django rest framework base.html फ़ाइल

संरचना है:

| 
|\ 
| apps 
| \ 
| settings.py 
\ 
templates 
    \ 
    rest_framework 
    \ 
    api.html 

api.html:

{% extends "rest_framework/base.html" %} 

{% block footer %} 
    Hello ! 
{% endblock %} 

settings.py:

...

TEMPLATE_LOADERS = (
    ('django.template.loaders.cached.Loader', (
     'django.template.loaders.filesystem.Loader', 
     'django.template.loaders.app_directories.Loader', 
     'django.template.loaders.eggs.Loader', 
    )), 
) 

...

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django.contrib.admin', 
    'django.contrib.admindocs', 
    'django.contrib.markup', 
    'django.contrib.webdesign', 
    ... 
    'rest_framework', 
    ... 


) 

...

REST_FRAMEWORK = { 
    'DEFAULT_AUTHENTICATION_CLASSES': (
     'rest_framework.authentication.BasicAuthentication', 
     'rest_framework.authentication.SessionAuthentication', 
    ), 
    'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',), 
    'PAGINATE_BY': 10 
} 

संशोधन मैं api.html में क्या ब्राउज़ करने योग्य एपीआई में प्रदर्शित नहीं होते। मैं क्या गलत कर रहा हूं ?

उत्तर

2

Django REST Framework का कौन सा संस्करण आप उपयोग कर रहे हैं? मैंने base.html में ब्लॉक फ़ूटर में परिवर्तन किए हैं और यह 3.0 रिलीज़ के लिए योजना बनाई गई थी।

क्या आपका 'हैलो!' पृष्ठ के स्रोत कोड में भी नहीं दिख रहा है (आप इसे CTRL + U दबाकर प्राप्त कर सकते हैं)?

यदि हां, तो यह अंततः सीएसएस के साथ रंग सफेद बनाने में एक मुद्दा हो सकता है। आप 'हैलो!' डाल सकते हैं इस तरह के एक टैग में: <p>Hello !</p>

संपादित करें:

अतिरिक्त जानकारी।

चिपचिपा पाद लेख पृष्ठ के नीचे हमेशा 60px प्रदर्शित करने के साथ एक मुद्दा था, इस प्रकार इसे देखने के लिए नीचे स्क्रॉल करना आवश्यक था। यदि आप पुराने संस्करण का उपयोग कर रहे हैं तो यह समस्या भी पैदा कर सकता है। सबसे महत्वपूर्ण सवाल यह है: हैलो! स्रोत एचटीएमएल में ब्राउजर को नहीं भेजा गया है या यह वहां है, लेकिन आप इसे पेज पर नहीं देख सकते हैं?

कृपया मुझे एक प्रतिक्रिया दें, इसलिए हम इसे हल कर सकते हैं।

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [os.path.join(BASE_DIR, 'templates')], 
     ... 
    } 
7

आप मुख्य settings.py से DIRS (यह हमें बताता है जहां टेम्पलेट्स के लिए देखने के लिए (ओवरराइड टेम्पलेट्स) खो रहे हैं यदि आप django1.8 का उपयोग करते हैं, क्योंकि यह tempalte diffrently लोड करता है, BASE_DIR आपके टेम्पलेट्स के लिए है, os.path.join (BASE_DIR, 'टेम्पलेट्स') django-rest-framework के लिए है।

+3

किसी भी तरह की स्थापना ' 'APP_DIRS': True'' ठीक से आप स्कैन नहीं करता है' rest_framework/api.html' के लिए टेम्पलेट्स फ़ोल्डरों एप्लिकेशन । एकमात्र तरीका मैं कर सकता था यह स्पष्ट रूप से मेरे प्रोजेक्ट रूट में 'टेम्पलेट्स/rest_framework/api.html' बनाना था और उसके बाद स्पष्ट रूप से इसे इस उत्तर द्वारा सुझाए गए अनुसार शामिल किया गया था। सुनिश्चित करें कि आप अपना 'BASE_DIR' मान जांचें, क्योंकि यह आपके सेटिंग संगठन पर निर्भर करता है (मेरे पास मेरी प्रोजेक्ट रूट की एक बाल निर्देशिका में मेरी' सेटिंग्स 'है)। –

-1

आप अपने tempaltes सेटिंग्स को बदल सकते

TEMPLATES = [ 
{ 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': [BASE_DIR,os.path.join(BASE_DIR, 'templates')], 
    ... 
} 

रहे हैं:

+0

मुझे इस समस्या का सामना करना पड़ा, टेम्पलेट लोड पथ कुछ जैसे .../tempaltes/templates/api.html इसलिए मैंने BASE_DIR को tempaltes dirs के रूप में जोड़ा जो इसे temlate को सही तरीके से ढूंढ पाएगा, मुझे नहीं पता कि मुझे नीचे वोट क्यों दें। –

1

यह Django में महत्वपूर्ण है> = 1.8 कि आप टेम्पलेट्स शब्दकोश में सत्य में "APP_DIRS" भी जोड़ते हैं।

TEMPLATES = [ { 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'APP_DIRS': True, 
    'DIRS': [BASE_DIR,os.path.join(BASE_DIR, 'templates')], 
    ... } 
2

djangorestframework==3.5.x

मैं सटीक समस्या जहां टेम्पलेट लिया नहीं गया जहां टेम्पलेट अपने प्रोजेक्ट एप्लिकेशन निर्देशिका में से एक में ही अस्तित्व में था, जैसे:

Project Structure

project/ 
    app1/ 
     templates/ 
      app1/ 
       ... 
      rest_framework/ 
       app.html 

settings.py

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

मैं joao figueiredo की टिप्पणी का पालन करें, और एप्लिकेशन निर्देशिका के बाहर एक विशिष्ट टेम्पलेट फ़ोल्डर जोड़ने के लिए किया था।

Project Structure

project/ 
    app1/ 
     templates/ 
      app1/ 
       ... 
    templates/ # Move your file to a specific template dir 
     rest_framework/ 
      app.html 

settings.py

DEBUG = True 
TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [os.path.join(BASE_DIR, 'templates')], # look in this specific folder 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       ... 
      ], 
      'debug': DEBUG 
     }, 
    }, 
]