Django Browser Cache umgehen

Django, Flask, Bottle, WSGI, CGI…
Antworten
ready
User
Beiträge: 33
Registriert: Sonntag 15. Juni 2008, 12:21
Kontaktdaten:

Hallo Leute,

ich habe ein Problem mit einer Seite. Es handelt sich um eine Produktsuche. Man hat also eine Liste von Kategorien in denen man suchen kann, wählt sich dann eine Kategorie aus, klickt darauf. Nun wird eine sog. Suchen-ID (fortlaufend) erzeugt und eine Weiterleitung vorgenommen. URL technisch sieht es so aus:
/shop/ (auswahl der Kategorie)
/shop/category/mehrschicht/ (Klick auf Kategorie Mehrschicht)
Weiterleitung nach: /shop/search/15/ (Wäre jetzt die 15te Suche in meinem Shop)

Der Code dazu ist folgendermaßen:

Code: Alles auswählen

def search_new(request, category_slug):
  from django.views.generic.simple import redirect_to
  search = Search()
  if isinstance(request.user, User):
    search.user = request.user
  search.category = Category.objects.get(slug=category_slug)
  search.save() 
  print "Neue Suche: ", search
  return redirect_to(request, '/shop/search/%s/' % (search.id), True)
Das entspricht der URL /shop/category/mehrschicht/

Soweit klar. Jetzt hat man zB. ne neue Suche erstellt, vllt. auch was gesucht, und entschliesst sich jetzt nochmal in der selben Kategorie (Mehrschicht) zu suchen. Jezt sollte eigentlich eine neue Suchen-ID (zB. Nr. 16) erzeugt werden. Das wird aber nicht.
Sondern es wird (vermutlich) aus dem Browser Cache die Weiterleitung nach /shop/search/15/ geladen, und der Benutzer sieht wieder seine alte Suche.
Dafür spricht auch dass der print aus dem def nicht ausgegeben wird.
Wie nehme ich jetzt für diese Weiterleitung den Browser-Cache raus, so dass eine neue Suchen-ID erzeugt wird?

Danke
MfG ready
BlackJack

@ready: Schau Dir mal die Bedeutung der Argumente von `redirect_to()` an. Und gibt es einen Grund warum Du eine `view`-Funktion statt `django.shortcuts.redirect()` verwendest?
Drache
User
Beiträge: 51
Registriert: Montag 29. November 2010, 21:51
Wohnort: Berlin
Kontaktdaten:

Falls es am Browser Cache liegt, kannst du an der url einen Parameter anhängen,
z.B. die aktuelle Zeit in Sekunden so wie : url/?123456789

Falls du jquery einsetzt schau mal nach:
$.ajaxSetup({cache: false}});

Das bewirkt den oben genannten Effekt.

Grüße
Drache
ready
User
Beiträge: 33
Registriert: Sonntag 15. Juni 2008, 12:21
Kontaktdaten:

@ready: Schau Dir mal die Bedeutung der Argumente von `redirect_to()` an.
Jo hab ich gemacht, steht für permanent. Habe es mal auf False gesetzt. Und siehe da jetzt funktioniert es wunschgemäß. Das Problem ist somit gelöst und es lag nicht am Cache.
Und gibt es einen Grund warum Du eine `view`-Funktion statt `django.shortcuts.redirect()` verwendest?
django.shortcuts.redirect() sagt mir jetz so nichts, aber ist das so eine Funktion die man direkt über die urls.py aufruft?
Dazu kann ich nur sagen: Wie soll ich sonst das Search Objekt erzeugen? Und genau hierfür benötige ich den View: Um das Search() Objekt zu erzeugen und dahin weiterzuleiten.

MfG ready
ready
User
Beiträge: 33
Registriert: Sonntag 15. Juni 2008, 12:21
Kontaktdaten:

Falls es am Browser Cache liegt, kannst du an der url einen Parameter anhängen,
z.B. die aktuelle Zeit in Sekunden so wie : url/?123456789

Falls du jquery einsetzt schau mal nach:
$.ajaxSetup({cache: false}});
Danke das hätte ich als nächstes probiert- > Problem bereits gelöst ;)

MfG ready
Antworten