2013-08-04 31 views
5

Sto cercando di fare caricare il seguente file staticidi carico con il nome della variabile in Django

<a href="{%static 'static/images/'{{ image.title }}'.png' %}">img file</a> 

dove image è in un ciclo di images derivato da un database.

Ma ho semplicemente ottenuto un errore Could not parse the remainder: '{{' from ''static/matrices/'{{'

Cosa devo fare per risolvere questo problema? Non posso usare percorsi relativi perché questo sarà usato anche da sottosezioni, con lo stesso template html.

+0

Perché hai contrassegnato una risposta sbagliata come corretta? – dalore

risposta

-9

Troppe citazioni!

Proprio

<a href="{% static 'images/{{ image.title }}.png' %}">img file</a> 

e non c'è bisogno di chiamare la statica nel link perché già caricato la statica

+0

va bene ... anche se la risposta è corretta, voterai davvero solo per vedere che hai la reputazione più alta. Non mi piace rispondere a molte spiegazioni, mi piace rispondere direttamente al punto :) – catherine

+0

@HeddevanderHeide sei sicuro? Hai provato? perché lo provo già molte volte Anche la tua risposta è corretta, ma scusa abbiamo menti diverse e non puoi costringere le persone a fare lo stesso con ciò che pensi. – catherine

+4

I tag di nidificazione NON funzionano, all'interno del '{%' -scope di una variabile templatetag sono già trattati come tali e non richiedono riconoscimenti circostanti. Questo non ha nulla a che fare con il favore personale, la tua risposta è semplicemente scorretta. L'output html sarebbe: '/ /images/{{image.title}}. Png' inclusi i riconoscimenti che sono trattati come stringhe. –

1

È consigliabile evitare i tag di nidificazione.

Che cosa stai cercando di risolvere? L'immagine non è parte del contenuto dinamico? Il tag statico è per statico contenuto non caricato file multimediali.

Se è necessario utilizzare il tag statico, il modo corretto sarebbe qualcosa nell'ordine di;

{% static image %} or {% static image.file %} 

A seconda del layout dell'oggetto. Se si utilizza un (eredita FileField), l'oggetto immagine contiene già il percorso, quindi non è necessario aggiungere manualmente le estensioni.

1

Quello che ho finito per fare è stato quello di dividere solo il percorso dal nome stesso . Quelle immagini rappresentano schede, sono statici e in sequenza. Non sono collegati al database di immagini.

Non ho voluto ripetere l'html per ogni corsa, quindi ho finito per fare un forloop come questo, un po 'semplificato.

{% for option in options_obj %} 
    <img class="highlight" src="{% static "store/img/editor/tab-" %} 
    {{ option.name.lower }}-selected.png"> 
{% endfor %} 

EDIT: Anche se questo funziona nella maggior parte delle situazioni si può davvero roba rovinare pure. Per me questo si è verificato quando si hanno immagini diverse per impostazioni di lingua diverse e allo stesso tempo si utilizzano strumenti come CachedStaticFilesStorage. Se è necessario aggiungere il codice lingua o qualcos'altro per la vostra immagine questa è una soluzione più solida

{% for option in options_obj %} 
    <img class="highlight" src="{% static "store/img/editor/tab-" 
    |add:LANGUAGE_CODE|add:"-selected.png" %}"> 
{% endfor %} 
9

ho avuto questo lavoro utilizzando una stringa vuota per il percorso statico e quindi utilizzando le mie variabili nella loro sezione, In questo modo:

<a href= "{% static "" %}{{obj.a}}/{{obj.b}}/{{obj.c}}.gz" >Name</a> 
+0

Qual è il punto del tag statico, quindi? Basta usare STATIC_URL. il tag statico è per quando si hanno degli archivi, potrebbe cambiare il nome, per esempio la memoria hash metterà l'hash md5 nel nome. – dalore

8

Si dovrebbe passare una stringa completa al tag statico da file statici. Questo è così può usare i tuoi statici per trovare il tuo file.

{% load staticfiles %} 
{% with 'images/'|add:image.title|add:'.png' as image_static %} 
    {% static image_static %} 
{% endwith %} 

Ma nel tuo caso d'uso potrebbe essere meglio se si memorizza il percorso delle immagini sul modello immagine stessa.

+1

Benvenuti in Stack Overflow! Anche se questa risposta è probabilmente corretta e utile, è preferibile includere alcune spiegazioni e spiegare come aiuta a risolvere il problema. Ciò diventa particolarmente utile in futuro, se c'è un cambiamento (possibilmente non correlato) che lo fa smettere di funzionare e gli utenti devono capire come funzionava una volta. –

2

È possibile utilizzare il tag modello get_static_prefix. get_static_prefix è una variabile che contiene il percorso specificato nel tuo STATIC_URL.Il tuo codice sarebbe:

{% load static %} 
<a href="{% get_static_prefix %}static/images/{{ image.title }}.png">img file</a> 

o

{% load static %} 
{% get_static_prefix as STATIC_PREFIX %} 
<a href="{{ STATIC_PREFIX }}static/images/{{ image.title }}.png">img file</a> 

Riferimento: get_static_prefix

-1

Add linea in settings.py

STATIC_URL = '/static/' 


MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 
MEDIA_URL = '/media/' 
comando

run: - pitone manage.py collectstatic cartella statica

generato

enter image description here

{% load static %} 
    <img src="{% static "images/2.jpg" %}" alt="something" style="width:80%"> 

PER CARICO CSS FILE

{% load staticfiles %} 
    <link rel="stylesheet" type="text/css" href="{% static 'media/style.css' %}"/> 
Problemi correlati