2014-09-23 8 views
8

Uso il framework django rest e come descritto qui: django rest framework doc Ho aggiunto /rest_framework/api.html nella directory dei miei modelli.Impossibile modificare il file django rest framework base.html

La struttura ora è:

| 
|\ 
| 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 
} 

La modifica che faccio in API.html non vengono visualizzate nella api sfogliabile. Che cosa sto facendo di sbagliato ?

risposta

2

Quale versione di Django REST quadro stai usando? Ho apportato delle modifiche al piè di pagina di blocco nel base.html e questo è stato piallato per la versione 3.0.

È il vostro 'Ciao!' inoltre non viene mostrato nel codice sorgente della pagina (puoi ottenerlo premendo CTRL + U)?

Se sì, di quanto potrebbe alla fine essere un problema con i CSS rendendo il colore bianco. Puoi mettere "Ciao!" in un tag come questo: <p>Hello !</p>.

EDIT:

Ulteriori informazioni.

C'è stato un problema con il piè di pagina appiccicoso visualizzazione sempre 60px sotto la pagina in basso, lo scorrimento verso il basso quindi era necessario per vederlo. Se si sta utilizzando una versione precedente, ciò potrebbe anche causare il problema. La domanda più importante è: è "Ciao!" per niente nell'HTML di origine inviato al browser o è lì, ma non è possibile vederlo sulla pagina?

favore mi invia un feedback, in modo che possiamo risolvere questo problema.

7

Vi manca la DIRS dalla settings.py principale (questo ci dice dove cercare i modelli (modelli di override):

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

impostazione in qualche modo ' 'APP_DIRS': True'' non correttamente la scansione si apps modelli cartelle per' rest_framework/api.html' . L'unico modo per farlo era creare esplicitamente un 'templates/rest_framework/api.html' nella mia root del progetto e quindi includerlo esplicitamente come suggerito da questa risposta. Assicurati di controllare il valore di 'BASE_DIR', poiché dipende dalla tua organizzazione delle impostazioni (ho le mie' impostazioni' in una directory figlia della mia root di progetto). –

-1

è possibile modificare le impostazioni per tempaltes

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

se usi django1.8, perché carica tempalte in modo diverso, BASE_DIR è per i tuoi modelli, os.path.join (BASE_DIR, 'templates') è per django-rest-framework

+0

Ho affrontato questo problema, il percorso di caricamento del modello un po 'come .../tempaltes/templates/api.html così ho aggiunto il BASE_DIR come dirs di tempaltes che lo farà trovare correttamente il temlate, non so perché darmi un voto negativo. –

1

È fondamentale in Django> = 1.8 aggiungete anche "APP_DIRS" a true nel dizionario TEMPLATES.

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

djangorestframework==3.5.x

ho avuto il problema esatto in cui il modello non è stato preso in cui esisteva il modello in uno dei miei progetti directory app, come ad esempio:

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 
     }, 
    }, 
] 

ho dovuto seguire joao figueiredo 's commento, e aggiungere una cartella modello specifico di fuori della cartella app.

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 
     }, 
    }, 
] 
Problemi correlati