Nel codice seguente sto cercando di inviare un oggetto con la richiesta, è corretto se è così come decodificarlo nel modello
def index(request):
cat = Category.objects.filter(title="ASD")
dict = {"cat" : cat}
request.update("dict" : dict)
#or
request.dict=dict;
E nei modelli possiamo scrivere il codice come
{% for obj in request.dict%}
obj.title
{% endfor %}
EDIT:
Se sto chiamando la funzione come
def post_list(request, page=0, paginate_by=20, **kwargs):
logging.debug("post_list")
page_size = getattr(settings,"BLOG_PAGESIZE", paginate_by)
return list_detail.object_list(
request,
queryset=Post.objects.published(),
paginate_by=page_size,
page=page,
**kwargs
)
risposte:
2 per risposta № 1Potresti farlo, ma perché vorresti? Django ha un modo semplice, ben definito e ben documentato di passare i dati in template - attraverso il contesto. Perché provare e trovare modi per ovviare a questo?
Modifica dopo commento No. Ancora una volta, Django ha un ottimo modo per passare il contesto in più in una vista generica, tramite extra_context
parametro che di nuovo è ben documentato.
0 per risposta № 2
Non stai mostrando la funzione effettiva che usi per rendere la tua vista (render()
, render_to_response()
, eccetera.).
Diciamo che stai usando render_to_response()
:
render_to_response(template_name[, dictionary][, context_instance][, mimetype])
Rende un dato modello con un dato dizionario di contesto e restituisce un Oggetto HttpResponse con quello renderizzato testo.
Quindi se passi {"foo": your_object}
come dizionario che puoi usare {{ foo }}
direttamente nel tuo modello.
Se stai usando il object_list
vista generica dovresti usare il extra_context
:
extra_context: Un dizionario di valori per aggiungere al contesto del modello. Di di default, questo è un dizionario vuoto. Se un valore nel dizionario è chiamabile, la vista generica chiamerà appena prima di renderizzare il modello.