2017-09-18 4 views
1

J'ai une page d'index avec une liste de mouvements dans une datatable, chaque ligne a des boutons qui permettent à l'utilisateur d'appuyer sur "Editer" pour aller à une nouvelle page où il peut voir les détails du mouvement.Django Chemin d'accès aux fichiers statiques changeant selon la page

la page d'index et sur les détails de base tout page fonctionnent correctement mouvement, les fichiers statiques sont chargés avec le chemin/gestion_mouvements/statique/...

Mais quand je l'utilise « (? P [0-9] +)/$ "dans mon URL de page pour pouvoir obtenir l'ID de mouvement dans l'URL, la page chargée change le chemin statique de gestion_mouvements/mouvementDetails/static/... par exemple et ne parvient pas à charger les fichiers statiques puisque le chemin devrait be gestion_mouvements/static/...

J'ai vérifié et essayé beaucoup de paramètres statiques différents dans settings.py mais rien n'a fonctionné jusqu'ici, n'importe qui a une idée sur comment je peux changer cela?

Ceci est mon urls.py de l'application

from django.conf.urls import url, patterns 
from .views import * 

urlpatterns = patterns('Gestion_Mouvement.views', 
    url(r'^tableau/(?P<idMI>\d+)$','tableau', name = 'tableau'), 
    url(r'^$', index), 
    url(r'^tableau',tableau, name = 'tableau'), 
    url(r'^mouvementDetails/(?P<pk>[0-9]+)/$', 'mouvementDetails', name = 'mouvementDetails'), 
    url(r'^index', index, name = 'index'), 
    url(r'^refresh_index','refresh_index', name = 'refresh_index'), 
    url(r'^finalisation','finalisation', name = 'finalisation'), 
    url(r'^creation','creation', name = 'creation'), 
    url(r'^historiques','histos', name = 'histos'), 
    url(r'^histo-pt0','histosPT0', name = 'histo-pt0'), 
    url(r'^histo-entrants','histosEntrants', name = 'histo-entrants'), 
    url(r'^histo-sortants','histosSortants', name = 'histo-sortants'), 
) 

mon index.html

{% load static %} 
<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Page</title> 
<meta name="generator" content="WYSIWYG Web Builder 12 - http://www.wysiwygwebbuilder.com"> 
<link href="../static\css/Gestion_Mouvements.css" rel="stylesheet"> 
<link href="../static\css/index.css" rel="stylesheet"> 
<link href="{% static 'css/jquery-ui.min.css' %}" media="all" rel="stylesheet"> 
<link href="{% static 'css/jquery.dataTables.min.css' %}" media="all" rel="stylesheet"> 
<link href="{% static 'css/bootstrap.min.css" rel="stylesheet' %}" media="all"> 
<link href="{% static 'css//bootstrap-datetimepicker.min.css' %}" media="all" rel="stylesheet"> 
<script src="{% static 'js/jquery-1.12.4.min.js' %}"></script> 
<script src="{% static 'js/jquery.dataTables.min.js' %}"></script> 
<script src="{% static 'js/jquery-ui.min.js' %}"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
$('#indexTab').dataTable({ 
    "bLengthChange": false, 
    "lengthMenu": [ [-1], ["All"] ] 
}); 
$('.editbtn').click(function(){ 
     var $row = $(this).closest("tr"); // Find the row 
     var $text = $row.find(".idMark").text(); // Find the text 
     alert($text); 
    }); 
$('.deletebtn').click(function(){ 
     var $row = $(this).closest("tr"); // Find the row 
     var $text = $row.find(".idMark").text(); // Find the text 
     alert($text); 
    }); 
}); 
</script> 
</head> 
<body> 
<div id="wb_Shape1" style="position:absolute;left:4px;top:5px;width:1300px;height:100px;z-index:0;"> 
<img src="../static\images/img0003.png" id="Shape1" alt="" style="width:1300px;height:100px;"></div> 
<div id="Html1" style="position:absolute;left:4px;top:107px;width:1300px;height:400px;z-index:1"> 
<table id="indexTab" class="display" width="100%" cellspacing="0"> 
      <thead> 
      <tr> 
       <th>ID</th> 
       <th>Date et heure création</th> 
       <th>Véhicule</th> 
       <th>Pesée 1</th> 
       <th>Type mouvement</th> 
       <th>Sous type</th> 
       <th>Code espèce</th> 
       <th>Libellé espèce</th> 
       <th>Edit/Delete</th> 
      </tr> 
     </thead> 
     <tbody>  
      {% for mouvement in mouvements %} 
      <tr name="mvtRow{{mouvement.Id}}"> 
      <th class="idMark">{{mouvement.Id}}</span></th> 
      <th class="ce3l7">{{mouvement.DateHeureCreat}}</span></th> 
      <th class="ce3l8">{{mouvement.Immat_Transporteur}}</span></th> 
      <th class="ce3l9">{{mouvement.Poids_Charge}}</span></th> 
      <th class="ce3l2">{{mouvement.Type_Mouvement}}</span></th> 
      <th class="ce3l8">{{mouvement.Sous_Domaine}}</span></th> 
      <th class="ce3l9">{{mouvement.Espece}}</span></th> 
      <th class="ce312">{{mouvement.Libelle}}</span></th> 
      <th><a href="/gestion_mouvement/mouvementDetails/{{mouvement.Id}}"><button type="button" class="editbtn">Edit</button> <a href="/gestion_mouvement/tableau"><button class="deletebtn">Delete</button></a></th> 
      </tr> 
      {% endfor %} 
     </tbody> 
</table></div> 
<input type="text" id="Editbox1" style="position:absolute;left:15px;top:17px;width:900px;height:30px;line-height:30px;z-index:2;" name="ebFluxState" value="{{listOPT.0}}" readonly spellcheck="false"> 
<input type="submit" id="Button1" name="btn_PeseeSilo" value="Pesée Silo" style="position:absolute;left:936px;top:17px;width:96px;height:40px;z-index:3;"> 
<input type="submit" id="Button2" name="btn_createManual" value="Création Manuelle" style="position:absolute;left:1037px;top:17px;width:119px;height:40px;z-index:4;"> 
<input type="submit" id="Button3" name="btn_refresh" value="Rafraichissement" style="position:absolute;left:1174px;top:17px;width:119px;height:40px;z-index:5;"> 
</body> 
</html> 

et mes settings.py Options STATIQUE:

#STATIC_ROOT = os.path.join(os.path.dirname(__file__), '..', 'static').replace('\\', '/') 
# URL prefix for static files. 
# Example: "http://media.lawrence.com/static/" 
PROJECT_DIR = os.path.dirname(__file__) 
STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(BASE_DIR, "static") 

STATICFILES_DIRS = (
    os.path.join(PROJECT_DIR,'static'), 
) 

TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__),'../templates'), 
) 

Les liens vers js Les fichiers/css sont exactement les mêmes dans l'autre page, ils sont appelés exactement de la même manière et pourtant le/mouvementDetails/get Ajouté à chaque chemin

Répondre

0

Chaque autre chose est parfaitement réglée. Vous devez changer un extrait de fichier HTML, comme ceci:

{% load static %} 
<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Page</title> 
<meta name="generator" content="WYSIWYG Web Builder 12 - http://www.wysiwygwebbuilder.com"> 
<link href="../static\css/Gestion_Mouvements.css" rel="stylesheet"> 
<link href="../static\css/index.css" rel="stylesheet"> 
<link href="{% static 'css/jquery-ui.min.css' %}" media="all" rel="stylesheet"> 
<link href="{% static 'css/jquery.dataTables.min.css' %}" media="all" rel="stylesheet"> 
<link href="{% static 'css/bootstrap.min.css" rel="stylesheet' %}" media="all"> 
<link href="{% static 'css//bootstrap-datetimepicker.min.css' %}" media="all" rel="stylesheet"> 
<script src="{% static 'js/jquery-1.12.4.min.js' %}"></script> 
<script src="{% static 'js/jquery.dataTables.min.js' %}"></script> 
<script src="{% static 'js/jquery-ui.min.js' %}"></script> 

Pour:

{% load static %} 
<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Page</title> 
<meta name="generator" content="WYSIWYG Web Builder 12 - http://www.wysiwygwebbuilder.com"> 
<link href="{% static 'css/Gestion_Mouvements.css' %}" rel="stylesheet"> 
<link href="{% static 'css/index.css' %}" rel="stylesheet"> 
<link href="{% static 'css/jquery-ui.min.css' %}" media="all" rel="stylesheet"> 
<link href="{% static 'css/jquery.dataTables.min.css' %}" media="all" rel="stylesheet"> 
<link href="{% static 'css/bootstrap.min.css" rel="stylesheet' %}" media="all"> 
<link href="{% static 'css//bootstrap-datetimepicker.min.css' %}" media="all" rel="stylesheet"> 
<script src="{% static 'js/jquery-1.12.4.min.js' %}"></script> 
<script src="{% static 'js/jquery.dataTables.min.js' %}"></script> 
<script src="{% static 'js/jquery-ui.min.js' %}"></script> 

En raison de ../static recherches pour toutes les combinaisons possibles en fonction du chemin relatif du dossier statique et projet/application.

+0

Je comprends le problème, mais ces deux lignes sont générées par WYSIWYG, je peux les réécrire sur eclipse mais mon problème n'est pas sur la page d'index, c'est sur le mouvementDetails/[ID] mais j'ai le même problème au auto ligne générée qui manque le format django. –

+0

@ Girardclément A ** mouvementDetails/[ID] ** url, quel template est rendu. Il pourrait y avoir un problème.Comme ** {% load static%} ** peut ne pas être défini ici ou ce fichier ne s'y étend pas. –

+0

@ Girardclément S'il vous plaît montrer la vue et le code de modèle d'url ** mouvementDetails/[ID] **. –

0

Modifier: Eh bien, maintenant que vous avez fourni les informations pertinentes, le problème est clair, voir les commentaires.

Quelques informations supplémentaires, par ex. vos paramètres statiques dans settings.py seraient très utiles. Cependant, cela se résume probablement vers le bas à ces choses:

En settings.py, assurez-vous de définir votre STATIC_URL, dans votre cas /static/:

# settings.py 
STATIC_URL = '/static/' 

Ensuite, dans votre modèle:

# your_template.html 
{% load static %} 
<img src="{% static "my_app/example.jpg" %}" alt="My image"/> 
+0

J'ai ces paramètres, ils fonctionnent parfaitement sur toutes mes pages, exécutez celui où j'utilise "(? P [0-9] +)/$" ... –

+0

Non, vous ne le faites pas. Vous avez deux chemins relatifs '../ static' au lieu d'utiliser' {% static'. Il y a le problème. – olieidel