2012-07-20 6 views
1

J'ai une application installée (django_tables2) avec son propre dossier de fichiers statiques mais je rencontre des problèmes pour les utiliser en utilisant {{ STATIC_URL }}. Après avoir lu les docs django, si je lancestatic_url ne résout pas correctement, django 1.4

>>> python manage.py findstatic django_tables2/themes/paleblue/css/screen.css 

findstatic localise en effet correctement celui fichier correspondant dans le répertoire des applications de site-packages.

Mon modèle pour la page en question contient:

{% block extrahead %} 
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}django_tables2/themes/paleblue/css/screen.css" /> 
{% endblock %} 

et blocs connexes existent dans le modèle parent. Cette page est signifiée au http://127.0.0.1:8000/todo/product_groups/Analytical/. Cependant, lors de l'exécution du serveur de développement, je reçois un 404 pour le css comme pointage au mauvais endroit:

GET /todo product_groups/Analytical/django_tables2/themes/paleblue/css/screen.css HTTP/1.1 404 2942 

ce qui se passe et pourquoi pas le serveur suivant {{ STATIC_URL }} la même manière que findstatic? J'avais cette même static_url css qui fonctionnait avant de refaire des url, mais je n'arrive pas à le faire fonctionner dans le nouveau design. Toute aide ou idée serait grandement appréciée.

extraits pertinents de settings.py:

MEDIA_URL = '/media/' 
STATIC_ROOT = 'C:/Users/riedldar/Documents/Code/Arclin/static/' 
STATIC_URL = '/static/' 
STATICFILES_DIRS = (
    "C:/users/riedldar/Documents/Code/Arclin/Arclin/static", 
) 
INSTALLED_APPS = ( 
.... 
'django.contrib.staticfiles',) 

# Required for tables2 
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth", 
"django.core.context_processors.debug", 
"django.core.context_processors.i18n", 
"django.core.context_processors.media", 
"django.core.context_processors.static", 
"django.contrib.messages.context_processors.messages", 
"django.core.context_processors.request", 
) 

STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder', 
'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

de urls.py:

from django.conf.urls import patterns, include, url 
# Uncomment the next two lines to enable the admin: 
from django.contrib import admin 
admin.autodiscover() 
urlpatterns = patterns('', 
# Examples: 
# url(r'^$', 'Arclin.views.home', name='home'), 
# url(r'^Arclin/', include('Arclin.foo.urls')), 

# Uncomment the admin/doc line below to enable admin documentation: 
url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 

# Uncomment the next line to enable the admin: 
url(r'^admin/', include(admin.site.urls)), 

# Todo/Task manager 
url(r'^todo/', include('todo.urls')), 

# Login/out 
url(r'^login/$', 'django.contrib.auth.views.login'), 
url(r'^logout/$', 'Arclin.views.logout_page'), 

# User Homepage 
url(r'^$', 'todo.views.user_home'), 

# 
) 

et Todo \ urls.py

from django.conf.urls.defaults import * 
#from models import ProductGroup 

urlpatterns = patterns('', 
    (r'^product_groups/([\w-]+)/$', 'todo.views.items_by_product_group'), 
    url(r'^task/(?P<task_id>\d{1,6})$', 'todo.views.view_task', name='todo_task_detail') 
    ) 

Répondre

0

Est-ce que todo.views.items_by_product_group affiche votre modèle avec RequestContext ou l'un des shortcuts ou des vues génériques qui l'incluent? Si ce n'est pas le cas, vos processeurs de contexte de modèle ne seront pas appliqués pour ajouter des variables telles que STATIC_URL au contexte de votre page, ce qui entraînera le comportement que vous décrivez. En outre, Django 1.4 introduit un nouveau tag de modèle {% static '…' %}, qui vous permet de vous référer aux fichiers statiques sans avoir besoin du STATIC_URL du contexte. L'utilisation de cela devrait également éviter ce problème (mais vous voudrez probablement toujours rechercher si ou pourquoi RequestContext est manquant: c'est généralement un bug).

+0

Merci Piet. Vous avez réussi. J'ai modifié mon todo.views.items_by_product_group lors du changement autour de l'URL et est passé d'une vue générique à une fonction de vue régulière. – riedldar

+0

Comme expliqué dans votre lien, j'ai dû ajouter 'context_instance = RequestContext (request))' comme argument à render_to_response et une fois que je l'ai fait, le 'STATIC_URL' est utilisé. Déclaration finale de retour: 'return render_to_response ('items_by_product_group.html', {'incomplete_table': table incomplète, 'completed_table': completed_table}, context_instance = RequestContext (requête))'. Jetez un oeil à la nouvelle balise de modèle 1.4. Merci encore! – riedldar

+0

Vous pouvez utiliser un autre raccourci pour cela: 'render (request, template, data)'. Cela fait la même chose que 'render_to_response (template, data, context_instance = RequestContext (request))'. –