/ / Invio di un oggetto con richiesta: django, modelli django, django-templates, django-views

Invio di un oggetto con richiesta: django, django-models, django-templates, django-views

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 № 1

Potresti 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.