Django-fr

Forum

#1 02-09-2009 18:23:40

GENTIL charlie
Membre
Inscription : 11-08-2010
Messages : 13

Pointage sur une ancre

Bonjour à tous,

Je souhaite savoir s'il existe un moyen pour passer une requête dans views.py permettant d'accéder à un endroit précis d'une page web plutôt que d'arriver directement au haut de page.

Si oui comment faire? j'ai essayé quelques choses du genre render_to_response('page.html#mon_ancre') sans succès.

D'avance merci

Hors ligne

#2 02-09-2009 18:27:16

Rémy HUBSCHER
Membre
Inscription : 11-08-2010
Messages : 161

Re : Pointage sur une ancre

Bonsoir,

Il te faut faire une HttpResponseRedirect() vers la page avec ton ancre.

Tu fais une view qui donne ta page et lorsque tu arrives sur 
prepage.html tu redirige vers page.html#mon_ancre

Il y a pas vraiment d'autres solutions vu que c'est une interpretation 
navigateur.

A bientôt

Rémy

Le 3 sept. 09 à 01:23, GENTIL charlie a écrit :

> Bonjour à tous,
>
> Je souhaite savoir s'il existe un moyen pour passer une requête dans 
> views.py permettant d'accéder à un endroit précis d'une page web 
> plutôt que d'arriver directement au haut de page.
>
> Si oui comment faire? j'ai essayé quelques choses du genre 
> render_to_response('page.html#mon_ancre') sans succès.
>
> D'avance merci
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django

Hors ligne

#3 03-09-2009 06:16:18

GENTIL charlie
Membre
Inscription : 11-08-2010
Messages : 13

Re : Pointage sur une ancre

Bonjour,
Pourrais-tu m'aider encore un peu...

Si je comprends bien je fais dans un premier une fonction qui m'envoie grâce à un render_to_response() sur une page html:
def index(request):
    return render_to_response('index.html')

C'est ensuite que je ne vois pas comment faire la redirection. Tu dis "lorsque j'arrive sur la page, je redirige",
Déjà comment puis-je dans la même fonction passer un render_to_response() et un HttpResponseRedirect()???
Je pense que déjà là je m'égare.... A noter aussi que je dois passer des variables, ce que HttpResponseRedirect() ne permet pas.

Ensuite en utilisant ce HttpResponseRedirect() j'aurai dans ma barre de navigation quelques choses du genre:
http://monsite/page1.html#mon_ancre

Cet Url n'étant pas déclarer dans Urls.py je vais retourner un message d'erreur.

Merci d'avance pour ton aide.

@+



Bonsoir,

Il te faut faire une HttpResponseRedirect() vers la page avec ton ancre.

Tu fais une view qui donne ta page et lorsque tu arrives sur 
prepage.html tu redirige vers page.html#mon_ancre

Il y a pas vraiment d'autres solutions vu que c'est une interpretation 
navigateur.

A bientôt

Rémy

Le 3 sept. 09 à 01:23, GENTIL charlie a écrit :

> Bonjour à tous,
>
> Je souhaite savoir s'il existe un moyen pour passer une requête dans 
> views.py permettant d'accéder à un endroit précis d'une page web 
> plutôt que d'arriver directement au haut de page.
>
> Si oui comment faire? j'ai essayé quelques choses du genre 
> render_to_response('page.html#mon_ancre') sans succès.
>
> D'avance merci

Hors ligne

#4 03-09-2009 12:36:04

Felix.Lemaignen@sungard.com
Membre
Inscription : 11-08-2010
Messages : 3

Re : Pointage sur une ancre

Les paramètres (ce qui suit le ?) ou les ancres (ce qui suit le #) ne sont pas évalués dans le url.py donc il n'y a pas de pb de ce coté là.
Comme l'a dit Rémy, la gestion du positionnement dans la page via une ancre ou tout autre technique est une problématique client donc je ne suis pas sûr que la solution la plus simple soit de gérer ça coté serveur.

Pour moi le plus simple serait d'inserer une petite ligne de javascript à la fin de ton template ou dans un onload du body du genre :
<script>document.location.href = '#ton_ancre';</script>

Au pire si javascript n'est pas activé coté client tu n'as pas le positionnement mais ce n'est pas un drame.

Félix

________________________________

De : django-bounces _AT_ lists.afpy.org [mailto:django-bounces _AT_ lists.afpy.org] De la part de GENTIL charlie
Envoyé : jeudi 3 septembre 2009 07:16
À : django _AT_ lists.afpy.org
Objet : [afpy/django] Pointage sur une ancre


Bonjour,
Pourrais-tu m'aider encore un peu...

Si je comprends bien je fais dans un premier une fonction qui m'envoie grâce à un render_to_response() sur une page html:
def index(request):
    return render_to_response('index.html')

C'est ensuite que je ne vois pas comment faire la redirection. Tu dis "lorsque j'arrive sur la page, je redirige",
Déjà comment puis-je dans la même fonction passer un render_to_response() et un HttpResponseRedirect()???
Je pense que déjà là je m'égare... A noter aussi que je dois passer des variables, ce que HttpResponseRedirect() ne permet pas.

Ensuite en utilisant ce HttpResponseRedirect() j'aurai dans ma barre de navigation quelques choses du genre:
http://monsite/page1.html#mon_ancre

Cet Url n'étant pas déclarer dans Urls.py je vais retourner un message d'erreur.

Merci d'avance pour ton aide.

@+



Bonsoir,

Il te faut faire une HttpResponseRedirect() vers la page avec ton ancre.

Tu fais une view qui donne ta page et lorsque tu arrives sur 
prepage.html tu redirige vers page.html#mon_ancre

Il y a pas vraiment d'autres solutions vu que c'est une interpretation 
navigateur.

A bientôt

Rémy

Le 3 sept. 09 à 01:23, GENTIL charlie a écrit :

> Bonjour à tous,
>
> Je souhaite savoir s'il existe un moyen pour passer une requête dans 
> views.py permettant d'accéder à un endroit précis d'une page web 
> plutôt que d'arriver directement au haut de page.
>
> Si oui comment faire?
j'ai essayé quelques choses du genre 
> render_to_response('page.html#mon_ancre') sans succès.
>
> D'avance merci

Hors ligne

#5 03-09-2009 15:47:36

GENTIL charlie
Membre
Inscription : 11-08-2010
Messages : 13

Re : Pointage sur une ancre

Concernant le # dans mon urls.py ça me retourne une erreur. Je verrai en détail ceci plus tard.

Par contre le script
<script>document.location.href =
'#ton_ancre';</script>

Ajoute bien #ton_ancre à la fin de l'url mais sans m'y renvoyer, alors que si je rajoute à la main cette ancre le renvoi marche correctement?

Je ne suis pas super alaise en html et un autre petit coup de pouce serai le bien venu.

Merci.

Charlie




________________________________
De : "Felix.Lemaignen _AT_ sungard.com" <Felix.Lemaignen _AT_ sungard.com>
À : django _AT_ lists.afpy.org
Envoyé le : Jeudi, 3 Septembre 2009, 13h36mn 04s
Objet : Re: [afpy/django] Pointage sur une ancre


Les paramètres (ce
qui suit le ?) ou les ancres (ce qui suit le #) ne sont pas évalués dans le
url..py donc il n'y a pas de pb de ce coté là.
Comme l'a dit Rémy,
la gestion du positionnement dans la page via une ancre ou tout autre technique
est une problématique client donc je ne suis pas sûr que la solution la plus
simple soit de gérer ça coté serveur.

Pour moi le plus
simple serait d'inserer une petite ligne de javascript à la fin de ton template
ou dans un onload du body du genre :
<script>document.location.href =
'#ton_ancre';</script>

Au pire si
javascript n'est pas activé coté client tu n'as pas le positionnement mais ce
n'est pas un drame.

Félix


________________________________
De : django-bounces _AT_ lists.afpy.org
[mailto:django-bounces _AT_ lists.afpy.org] De la part de GENTIL
charlie
Envoyé : jeudi 3 septembre 2009 07:16
À : django _AT_ lists.afpy.org
Objet : [afpy/django] Pointage sur une
ancre


Bonjour,
Pourrais-tu m'aider encore un peu...

Si je comprends bien je fais dans un premier une fonction qui m'envoie grâce à un render_to_response() sur une page html:
def index(request):
    return render_to_response('index.html')

C'est ensuite que je ne vois pas comment faire la redirection. Tu dis "lorsque j'arrive sur la page, je redirige",
Déjà comment puis-je dans la même fonction passer un render_to_response() et un HttpResponseRedirect()???
Je pense que déjà là je m'égare... A noter aussi que je dois passer des variables, ce que HttpResponseRedirect() ne permet pas.

Ensuite en utilisant ce HttpResponseRedirect() j'aurai dans ma barre de navigation quelques choses du genre:
http://monsite/page1.html#mon_ancre

Cet Url n'étant pas déclarer dans Urls.py je vais retourner un message d'erreur.

Merci d'avance pour ton aide.

@+



Bonsoir,

Il te faut faire une HttpResponseRedirect() vers la page avec ton ancre.

Tu fais une view qui donne ta page et lorsque tu arrives sur 
prepage.html tu redirige vers page.html#mon_ancre

Il y a pas vraiment d'autres solutions vu que c'est une interpretation 
navigateur.

A bientôt

Rémy

Le 3 sept. 09 à 01:23, GENTIL charlie a écrit :

> Bonjour à tous,
>
> Je souhaite savoir s'il existe un moyen pour passer une requête dans 
> views.py permettant d'accéder à un endroit précis d'une page web 
> plutôt que d'arriver directement au haut de page.
>
> Si oui comment faire?
j'ai essayé quelques choses du genre 
> render_to_response('page.html#mon_ancre') sans succès.
>
> D'avance merci

Hors ligne

#6 04-09-2009 00:26:20

Jonathan Leroy - Inikup
Membre
Lieu : Nîmes, france
Inscription : 11-08-2010
Messages : 27
Site Web

Re : Pointage sur une ancre

Bonjour,

On 03/09/09 16:47, GENTIL charlie wrote:
> Concernant le # dans mon urls.py ça me retourne une erreur. Je verrai en
> détail ceci plus tard.

C'est normal : le # ne doit pas être indiqué dans le fichier url.py,
index.html et index.html#ancre désignants un seul et même fichier
(index.html).

> Par contre le script
> <script>document.location.href = '#ton_ancre';</script>
>
> Ajoute bien #ton_ancre à la fin de l'url mais sans m'y renvoyer, alors
> que si je rajoute à la main cette ancre le renvoi marche correctement?
>
> Je ne suis pas super alaise en html et un autre petit coup de pouce
> serai le bien venu.

En gros, voici une des solutions à ton problème, via un système de
redirection :

def vue1(request):
    [...]
    request.session['var1'] = var1
    request.session...

    return HttpResponseRedirect('/page/#ancre')

def page(request)
    var1 = request.session.get('var1')

    if not var1:
       HttpResponseRedirect(...)

    request.session['var1'] = None
    request.session...

    return render_to_response('template.html')


La solution conssite à créer une vue qui va traiter les informations qui
lui sont passés en POST via un formulaire (représenté par le premier
[...]), sans les afficher. Une fois ceci fait, les variables à afficher
ne sont pas passés au template via render_to_response(), mais mise en
session.

Le visiteur est ensuite redirigé vers la page à afficher avec l'ancre
(/page/#ancre dans mon exemple), qui va récupérer les informations mises
en session à l'étape précédente et les passer au template.
Si toutefois ces informations n'exitaient pas (l'utilisateur accède à
/page/ sans avoir validé le formulaire), il sera redirigé vers le
formulaire.

J'espère que mes explications ont étés assez claires smile

Hors ligne

#7 07-09-2009 08:23:52

GENTIL charlie
Membre
Inscription : 11-08-2010
Messages : 13

Re : Pointage sur une ancre

Bonjour à tous,

Petit message pour vous remercier tous.
La soluce de Jonathan marche nikel et répond en plus à une autre de mes questions concernant la possibilité d'afficher une variable issu d'un formulaire sur plusieurs page (grâce au session)

2 coups en 1. Excellent.

Encore merci

Hors ligne

Pied de page des forums