J'essaie de passer des variables (variable de navigateur) à tous mes modèles de mon application. Tout conseiller sur la manière de le faire fonctionner?
Vue: P>
{% for prod in browser %} {{ prod }}, {% endfor %}
3 Réponses :
Actuellement, vous passez actuellement Personnellement, je préfère toujours un motif comme celui-ci à la place: P> locals () code> comme une portée variable qui devrait inclure
navigateur code> aswell, mais je trouve l'utilisation de
locaux () code > Très laid.
def browser(request):
context = RequestContext(request)
primary_cat_list = Categories.objects.order_by("category")
subcat_list = SubCategories.objects.order_by("sub_category")
product = Productbackup.objects.order_by("website")
browser = list(chain(primary_cat_list, subcat_list, product))
context['browser'] = browser
return render_to_response('reserve/templates/base.html', context_instance=context)
Cela ne semble pas fonctionner ... base.html n'affiche toujours rien.
@sharataka: Dans ce cas, peut-être que la liste est simplement vide? Et si vous faites quelque chose comme ceci: navigateur = ["spam", "œufs"] code>?
Vous, mon ami, êtes sur le marché des processeurs de contexte de une entrée de blog écrit par un très nimbler et Erudite Technical Writer que moi: P>
quels sont les processeurs de contexte de modèle? strong> p>
Les processeurs de contexte de Django sont une installation qui vous permet de fournir des données et des rappels à vos modèles. P>
Vous pouvez le faire de deux manières: p>
Si cette approche pour réussir les données aux modèles semblait absurde et obscurcée, vous n'êtes pas seul. La complexité impliquée dans une opération aussi simple est injustifiée et contre-productive, mais chaque système a ses lacunes. P>
blockQuote>
La documentation officielle est ici: p>
https://docs.djangoproject.com/fr/dev/ref/templated/api/ p>
Ainsi, mais oui, je suis en train de programmer avec Django pendant un moment et une des raisons pour lesquelles j'aime vraiment la résolution de problèmes avec laquelle c'est parce qu'il est presque byzantin dans sa complexité, mais pas de manière dominante. Il a une tonne de geegaws et de doodads qui peuvent ne pas être immédiatement utiles; Chacune d'entre elles est extrêmement pratique lorsque vous en avez besoin, et cela restera hors de votre chemin sinon. P>
Le résultat ici pour vous est: les processeurs contextuels sont un bon exemple de ceux-ci. Oui. P>
Custom code> à votre
rendu_to_response () code> appel li>
httpRequest code> comme entrée et renvoie une charge utile ou un rappel, puis
Enregistrement du processeur de contexte dans votre
Params.py code>, puis fournissez votre
rendu_to_response () code> appel avec l'attribut DemandeContext Code>
au lieu de votre propre (vous pouvez toujours prolonger
demandeContext code> pour ajouter plus de données sur une demande individuelle du cours). LI>
ul>
N'était-ce pas si ce que l'OP demandait? ... Je suis enclin à être d'accord sur un niveau personnel avec une overcilleuse de R / T, car je ne travaille pas généralement de cette façon. Mais je ne peux pas dire avec certitude de quelque manière que ce soit, il est donc préférable de partir en tant qu'en aventure des programmeurs, l'expérience éducative dont je pouvais faire de loin les commentaires que je pourrais faire. Quoi qu'il en soit, c'est pourquoi j'ai ajouté le ¶ à la fin, car la Q ressemblait à une personne qui explorait le cadre autant que la résolution d'un problème technique spécifique.
Je peux vous donner un exemple de mon code, cela fonctionne bien. Voici le fichier nommé et c'est une partie de ma base.html (un modèle qui J'utilise wor toutes mes pages) p> context_processorsors.py code>:
context_processorsors.py h1>
base.html h1>
Je ne sais pas si cela a quelque chose à voir avec cela, mais c'est étrange que votre fonction est nommée
navigateur Code> et vous attribuez également à une variable appelée
Navigateur code>. J'ai fait des expériences dans une coquille Python et que cela ne semble pas être le problème, mais vous voudrez peut-être le changer pour le rendre moins déroutant.
Assurez-vous également que votre liste n'est pas vide. Essayez d'utiliser le débogueur ou d'imprimer la valeur à votre vue.
Et, vous demandez vraiment comment obtenir des variables à apparaître dans tous les modèles ou pourquoi dans ce cas particulier, le navigateur code> code> ne fonctionne pas?
@Briannéal J'avais initialement voulu savoir pourquoi la variable du navigateur n'était pas transmise à la base.html. Cela me permettrait efficacement d'utiliser la variable sur tous les modèles, ce qui est vraiment ce que j'essaie de faire.