Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1796 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7  8
Auteur Sujet :

blabla@django

n°2081623
nraynaud
lol
Posté le 09-06-2011 à 17:20:48  profilanswer
 

Reprise du message précédent :

Code :
  1. def find_extent(node, current_extent=0):
  2.    def extent_finder(latitude, longitude, altitude):
  3.        if current_extent is None:
  4.            current_extent = {'minLat':latitude, 'maxLat':latitude, 'minLng':longitude, 'maxLng':longitude}
  5.        else:
  6.            current_extent['minLat']=min(latitude, current_extent['minLat'])
  7.            current_extent['minLng']=min(longitude, current_extent['minLng'])
  8.            current_extent['maxLat']=max(latitude, current_extent['maxLat'])
  9.            current_extent['maxLng']=max(longitude, current_extent['maxLng'])
  10.        print (latitude, longitude, altitude)
  11.    if node.nodeType == Node.ELEMENT_NODE and node.nodeName == 'coordinates':
  12.        process_tuples(node.childNodes[0].nodeValue, extent_finder)
  13.    for subnode in node.childNodes:
  14.        find_extent(subnode, current_extent)
  15.    return current_extent


dites, j'ai "UnboundLocalError: local variable 'current_extent' referenced before assignment" à la ligne du if, comment je peux faire mon compte en python ?
sachant que j'ai plutôt envie de passer mon truc par effet de bord que réellement par des valeurs comme en pur fonctionnel.

Message cité 1 fois
Message édité par nraynaud le 09-06-2011 à 17:21:29

---------------
trainoo.com, c'est fini
mood
Publicité
Posté le 09-06-2011 à 17:20:48  profilanswer
 

n°2081659
0x90
Posté le 09-06-2011 à 18:39:47  profilanswer
 

nraynaud a écrit :

Code :
  1. def find_extent(node, current_extent=0):
  2.    def extent_finder(latitude, longitude, altitude):
  3.        if current_extent is None:
  4.            current_extent = {'minLat':latitude, 'maxLat':latitude, 'minLng':longitude, 'maxLng':longitude}
  5.        else:
  6.            current_extent['minLat']=min(latitude, current_extent['minLat'])
  7.            current_extent['minLng']=min(longitude, current_extent['minLng'])
  8.            current_extent['maxLat']=max(latitude, current_extent['maxLat'])
  9.            current_extent['maxLng']=max(longitude, current_extent['maxLng'])
  10.        print (latitude, longitude, altitude)
  11.    if node.nodeType == Node.ELEMENT_NODE and node.nodeName == 'coordinates':
  12.        process_tuples(node.childNodes[0].nodeValue, extent_finder)
  13.    for subnode in node.childNodes:
  14.        find_extent(subnode, current_extent)
  15.    return current_extent


dites, j'ai "UnboundLocalError: local variable 'current_extent' referenced before assignment" à la ligne du if, comment je peux faire mon compte en python ?
sachant que j'ai plutôt envie de passer mon truc par effet de bord que réellement par des valeurs comme en pur fonctionnel.


Ptetre un truc à base de yield/generator:

Code :
  1. def iter_tuple(data):
  2.    for tuple in data.split(' '):
  3.        yield tuple.split(',')
  4.  
  5. def iter_coordinates(node):
  6.    if node.nodeType = Node.ELEMENT_NODE and node.nodeName == 'coordinates':
  7.     for tuple in iter_tuples(node.childNodes[0].nodeValue):
  8.            yield tuple
  9.    for subnode in node.childNodes:
  10.        find_extent(subnode, current_extent)
  11.  
  12. def find_extend(node):
  13.    current_extent = {'minLat': None, 'maxLat': None, 'minLng': None, 'maxLng': None}
  14.    for latitude, longitude, altitude in iter_coordinates(node)
  15.        current_extent['minLat'] = min(current_extent['minLat'], latitude)
  16.        current_extent['maxLat'] = max(current_extent['maxLat'], latitude)
  17.        current_extent['minLng'] = min(current_extent['minLng'], longitude)
  18.        current_extent['maxLng'] = max(current_extent['maxLng'], longitude)
  19.    return current_extent


 
PS: ton code va être super marrant aux alentours du wrap des longitudes par contre :/


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°2081669
nraynaud
lol
Posté le 09-06-2011 à 19:01:16  profilanswer
 

je capte pas trop le yield.
 
Et surtout pourquoi mon truc marche pas ? j'ai un warning dans pycharm et une erreur à l'exécution et je sens que c'est l'occasion de comprendre un truc pervers dans python.


---------------
trainoo.com, c'est fini
n°2081749
masklinn
í dag viðrar vel til loftárása
Posté le 10-06-2011 à 09:02:13  profilanswer
 

nraynaud a écrit :

je capte pas trop le yield.

 

Et surtout pourquoi mon truc marche pas ? j'ai un warning dans pycharm et une erreur à l'exécution et je sens que c'est l'occasion de comprendre un truc pervers dans python.


Parce que Python a une inférence de scope toute pourrie.

 

En Python 2, un binding peut être de 3 types: local, global ou closure. Si tu as une quelconque assignation (a = b) dans ta fonction, avec ton binding en LHS, ce binding devient local. Sauf si tu as une déclaration global a dans la fonction/scope, dans ce cas il va modifier le binding global.

 

Ça veut dire qu'une closure n'est pas r/w en Python 2, just read.

 

En Python 3, ils ont pas fixé le binding, ils ont ajouté la déclaration nonlocal a pour indiquer que c'est une closure.

 

Ici, tu assignes une valeur à current_extent (ligne 4), donc Python infère que c'est une variable locale, et `current_extent` pête parce que la locale n'existe pas encore en scope.

 

Je suggère ces modifs:

 
Code :
  1. def find_extent(node, current_extent=None):
  2.       if current_extent is None: current_extent = {}
  3.       def extent_finder(latitude, longitude, altitude):
  4.           if not current_extent:
  5.               current_extent.update(minLat=latitude, maxLat=latitude, minLng=longitude, maxLng=longitude)
  6.           else:
  7.               current_extent.update(
  8.                   minLat=min(latitude, current_extent['minLat']),
  9.                   minLng=min(longitude, current_extent['minLng']),
  10.                   maxLat=max(latitude, current_extent['maxLat']),
  11.                   maxLng=max(longitude, current_extent['maxLng']))
  12.           print (latitude, longitude, altitude)
  13.       if node.nodeType == Node.ELEMENT_NODE and node.nodeName == 'coordinates':
  14.           process_tuples(node.childNodes[0].nodeValue, extent_finder)
  15.       for subnode in node.childNodes:
  16.           find_extent(subnode, current_extent)
  17.       return current_extent
 

Tu peux aussi dégager le test explicite par une utilisation judicieuse de .get:

Code :
  1. def find_extent(node, current_extent=None):
  2.       if current_extent is None: current_extent = {}
  3.       def extent_finder(latitude, longitude, altitude):
  4.           current_extent.update(
  5.                   minLat=min(latitude, current_extent.get('minLat', float('inf'))),
  6.                   minLng=min(longitude, current_extent.get('minLng', float('inf'))),
  7.                   maxLat=max(latitude, current_extent.get('maxLat', float('-inf'))),
  8.                   maxLng=max(longitude, current_extent.get('maxLng', float('-inf'))))
  9.           print (latitude, longitude, altitude)
  10.       if node.nodeType == Node.ELEMENT_NODE and node.nodeName == 'coordinates':
  11.           process_tuples(node.childNodes[0].nodeValue, extent_finder)
  12.       for subnode in node.childNodes:
  13.           find_extent(subnode, current_extent)
  14.       return current_extent

Message cité 1 fois
Message édité par masklinn le 10-06-2011 à 09:09:17

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2081782
nraynaud
lol
Posté le 10-06-2011 à 10:39:05  profilanswer
 

masklinn a écrit :


Parce que Python a une inférence de scope toute pourrie.
 
En Python 2, un binding peut être de 3 types: local, global ou closure. Si tu as une quelconque assignation (a = b) dans ta fonction, avec ton binding en LHS, ce binding devient local. Sauf si tu as une déclaration global a dans la fonction/scope, dans ce cas il va modifier le binding global.
 
Ça veut dire qu'une closure n'est pas r/w en Python 2, just read.
 
En Python 3, ils ont pas fixé le binding, ils ont ajouté la déclaration nonlocal a pour indiquer que c'est une closure.
 
Ici, tu assignes une valeur à current_extent (ligne 4), donc Python infère que c'est une variable locale, et `current_extent` pête parce que la locale n'existe pas encore en scope.
 
Je suggère ces modifs:
 

Code :
  1. def find_extent(node, current_extent=None):
  2.       if current_extent is None: current_extent = {}
  3.       def extent_finder(latitude, longitude, altitude):
  4.           if not current_extent:
  5.               current_extent.update(minLat=latitude, maxLat=latitude, minLng=longitude, maxLng=longitude)
  6.           else:
  7.               current_extent.update(
  8.                   minLat=min(latitude, current_extent['minLat']),
  9.                   minLng=min(longitude, current_extent['minLng']),
  10.                   maxLat=max(latitude, current_extent['maxLat']),
  11.                   maxLng=max(longitude, current_extent['maxLng']))
  12.           print (latitude, longitude, altitude)
  13.       if node.nodeType == Node.ELEMENT_NODE and node.nodeName == 'coordinates':
  14.           process_tuples(node.childNodes[0].nodeValue, extent_finder)
  15.       for subnode in node.childNodes:
  16.           find_extent(subnode, current_extent)
  17.       return current_extent


 
Tu peux aussi dégager le test explicite par une utilisation judicieuse de .get:

Code :
  1. def find_extent(node, current_extent=None):
  2.       if current_extent is None: current_extent = {}
  3.       def extent_finder(latitude, longitude, altitude):
  4.           current_extent.update(
  5.                   minLat=min(latitude, current_extent.get('minLat', float('inf'))),
  6.                   minLng=min(longitude, current_extent.get('minLng', float('inf'))),
  7.                   maxLat=max(latitude, current_extent.get('maxLat', float('-inf'))),
  8.                   maxLng=max(longitude, current_extent.get('maxLng', float('-inf'))))
  9.           print (latitude, longitude, altitude)
  10.       if node.nodeType == Node.ELEMENT_NODE and node.nodeName == 'coordinates':
  11.           process_tuples(node.childNodes[0].nodeValue, extent_finder)
  12.       for subnode in node.childNodes:
  13.           find_extent(subnode, current_extent)
  14.       return current_extent



merci, j'étais arrivé presque à la même chose en itérant sur ma solution. Par contre je vais pas utiliser .get() parce que je veux pas de valeurs si je passe jamais dans la boucle.


---------------
trainoo.com, c'est fini
n°2082343
masklinn
í dag viðrar vel til loftárása
Posté le 14-06-2011 à 14:17:31  profilanswer
 

django.contrib.staticfiles dans 1.3 [:bien]

 

manage.py collectstatic pendant le déploiement [:bien]


Message édité par masklinn le 14-06-2011 à 14:17:42

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2082353
SekYo
Posté le 14-06-2011 à 15:18:24  profilanswer
 

Tu le veux en quelle taille ton débarquement ? La 1.3 c'était fin mars :D
 
Sinon y avait la DjangoCon EU, et ils ont enfin évoqué sérieusement le passage à Python 3 : http://reinout.vanrees.org/weblog/ [...] jango.html ( en bas du billet )

n°2082358
masklinn
í dag viðrar vel til loftárása
Posté le 14-06-2011 à 15:32:18  profilanswer
 

SekYo a écrit :

Tu le veux en quelle taille ton débarquement ? La 1.3 c'était fin mars :D


Je sais bien, mais j'avais pas eu l'occasion de jouer avec, ou avec contrib.staticfiles :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2082428
Shinuza
This is unexecpected
Posté le 14-06-2011 à 20:42:27  profilanswer
 

./manage collectstatic
./manage compress
 
Enjoy your A grade.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°2082526
nraynaud
lol
Posté le 15-06-2011 à 11:12:57  profilanswer
 

Shinu> c'est le compress de quelle appli ?  
 
j'ai passé 2 jours à mettre en place l'appli "compress" et yui


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le 15-06-2011 à 11:12:57  profilanswer
 

n°2082553
Shinuza
This is unexecpected
Posté le 15-06-2011 à 13:46:51  profilanswer
 

django-compressor

 

Ça compresse le JS de base, et tu peux brancher des adaptateurs optionnels. Soit pour remplacer les compresso JS, soit pour compresser les CSS.


Message édité par Shinuza le 15-06-2011 à 13:47:26

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°2082559
nraynaud
lol
Posté le 15-06-2011 à 13:54:27  profilanswer
 

hum ok, j'ai utilisé un autre truc qui s'appelle http://code.google.com/p/django-compress/
 
mais en regooglant le truc, ils apparaissent juste l'un dessous l'autre, et j'ai pas capté que c'était 2 trucs différents à cause de leurs noms très proches, du coup j'ai même pas évalué.


---------------
trainoo.com, c'est fini
n°2082591
Shinuza
This is unexecpected
Posté le 15-06-2011 à 15:57:50  profilanswer
 

nraynaud a écrit :

hum ok, j'ai utilisé un autre truc qui s'appelle http://code.google.com/p/django-compress/
 
mais en regooglant le truc, ils apparaissent juste l'un dessous l'autre, et j'ai pas capté que c'était 2 trucs différents à cause de leurs noms très proches, du coup j'ai même pas évalué.


Ton truc est plus maintenu :)


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°2082592
nraynaud
lol
Posté le 15-06-2011 à 16:05:47  profilanswer
 

Shinuza a écrit :


Ton truc est plus maintenu :)


génial, j'adore, j'adhère.
 
fuck sa race la pute


---------------
trainoo.com, c'est fini
n°2082618
SekYo
Posté le 15-06-2011 à 17:38:13  profilanswer
 

nraynaud > C'est un peu le truc chiant avec les applis django, faut faire gaffe aux dates de dernières MAJ, nombre d'users, etc...
 
Y a http://djangopackages.com/ qui est pas mal pour ça, comme tu peux voir le graph des commit, le nombre de watchers et de forks d'un seul coup, ça donne une idée de l'activité de l'appli.

n°2082865
Remigio
Radio Flip, 72.8
Posté le 17-06-2011 à 09:22:46  profilanswer
 

Hello,
 
Question de base,
 
J'ai un model match :
 
Joueur_dom = FK(User)
Joueur_ext = FK(User)
Pts_Jd = Integer
Pts_Je = Integer
 
 
ce qui donne dans la table quelque chose comme :
 
 ______________________________________
| Joueur_dom | Joueur_ext | Pts_Jd | Pts_Je |
 -------------------------------------------
| Alice          | Bob           |   3      |    1     |
| bob           | toto           |   2      |    3     |
| Alice          | toto          |   1      |    1     |
 -------------------------------------------
 
Je voudrais récupérer les points encaissés à domicile par Alice :
 
>>> Match.objects.filter(joueur_dom="Alice" ).aggregate(Sum('Pts_Jd'))
>>> 4

Mais je voudrais maintenant le nombre de victoire, nul, défaite d'Alice à domicile ?
Comment récupérer en queryset les victoires par exemple. Je peux pas faire un .annotate(victoire='Pts_Jd>Pts_Je') ou un truc dans le genre ?
 
Je trouve rien dans la doc :/


---------------
Everybody can succeed, all you need is to believe
n°2082870
masklinn
í dag viðrar vel til loftárása
Posté le 17-06-2011 à 09:58:57  profilanswer
 

Remigio a écrit :

Je peux pas faire un .annotate(victoire='Pts_Jd>Pts_Je') ou un truc dans le genre ?


Je pense que tu dois utiliser .extra pour ajouter un field genre 'home_advantage' à ton queryset.

 

Genre

Code :
  1. .extra(select={'victoire': 'pts_jd > pts_je'})}


et tu aggrèges là dessus derrière.


Message édité par masklinn le 17-06-2011 à 10:00:24

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2082873
Remigio
Radio Flip, 72.8
Posté le 17-06-2011 à 10:17:40  profilanswer
 

Ah ! ptain c'est ça que je cherchais. Je savais bien que l'avais vu un truc du genre. Merci bien :jap:


---------------
Everybody can succeed, all you need is to believe
n°2082936
Remigio
Radio Flip, 72.8
Posté le 17-06-2011 à 14:00:50  profilanswer
 

Bon, on ne peut pas faire un  Monmodel.objects.extra(select={'mon_champ':'toto'}).aggregate(Sum('mon_champ')) :??:


Message édité par Remigio le 17-06-2011 à 14:01:10

---------------
Everybody can succeed, all you need is to believe
n°2086111
nraynaud
lol
Posté le 30-06-2011 à 12:03:50  profilanswer
 

dites, j'ai une entité qui possède un champ avec un fichier.
Pour l'instant j'ai un formulaire qui uploade le fichier, mais maintenant je vais  générer le contenu du fichier côté serveur.
J'aimerai le faire passer dans le pipe d'upload pour qu'il soit validé, stocké et renommé comme les autres, y'a moyen de faire ça ?


---------------
trainoo.com, c'est fini
n°2086114
SekYo
Posté le 30-06-2011 à 12:06:48  profilanswer
 

J'imagine que tu passes par un FileField dans un objet Form ? Le cas échéant faudrait voir pour initialiser ton Form avec une "pseudo" request qui contiendrait ton fichier, il passerait ainsi dans les différentes méthodes de valiation de ton Form/FileField

n°2086116
nraynaud
lol
Posté le 30-06-2011 à 12:09:52  profilanswer
 

oui, c'est pas mal, comment j'envoie un Form complété au système ?

 

edit:
nan, c'est bon, je suis con. je remplis mon ModelForm avec mon fichier généré, je valide, je prend l'entité qu'il génère et je la sauve. Y'a pas de pipe.


Message édité par nraynaud le 30-06-2011 à 12:12:06

---------------
trainoo.com, c'est fini
n°2086183
nraynaud
lol
Posté le 30-06-2011 à 15:00:47  profilanswer
 


def kml_from_json(json_data):
    decoded_data = json.loads(json_data)
    features = []
    for feature in decoded_data:
        if 'marker' in feature:
            position = decode_polyline(feature['marker']['position'])[0]
            features.append('<Placemark><Point><coordinates>' + ','.join(map(str, position))
            + '</coordinates></Point></Placemark>')
        if 'polyline' in feature:
            path = decode_polyline(feature['polyline']['path'])
            features.append('<Placemark><LineString><coordinates>' + ' '.join(
                map(lambda p:','.join(map(str, p)), path)) + '</coordinates></LineString></Placemark>')
 
    result = '<kml><Document><name>LOL</name>' + ''.join(features) + '</Document></kml>'
    return result


quelqu'un pour me raccourcir ça svp ?
genre il doit y avoir une feinte pour la sélection du codepath sur la clef, et une feinte pour utiliser map()


---------------
trainoo.com, c'est fini
n°2088563
nraynaud
lol
Posté le 11-07-2011 à 09:50:00  profilanswer
 

dites, comment je peux supprimer la protection CSRF  sur une vue qui est dans un egg ?
 
j'ai installé httpproxy, mais tout mes POST dessus foirent parce que j'ai pas le token CSRF.


---------------
trainoo.com, c'est fini
n°2088598
SekYo
Posté le 11-07-2011 à 11:01:14  profilanswer
 

Dans un egg directement j'en ai aucune idée, pour tes vues à toi y a le décorateur @csrf_exempt
 
T'as pas moyen de rajouter le token dans tes données POST plutôt que de virer toute la protection CSRF ?

n°2088603
nraynaud
lol
Posté le 11-07-2011 à 11:07:47  profilanswer
 

SekYo a écrit :

Dans un egg directement j'en ai aucune idée, pour tes vues à toi y a le décorateur @csrf_exempt
 
T'as pas moyen de rajouter le token dans tes données POST plutôt que de virer toute la protection CSRF ?


ouais, le décorateur je l'ai trouvé, mais j'ai aucune idée de comment l'utiliser sans annoter directement la vue
 
bah 1) la protection CSRF sur un proxy on s'en fout 2) je trouve pas le nom du champ à rajouter, j'ai trouvé la valeur à lire dans un cookie sur la doc par contre ( https://docs.djangoproject.com/en/dev/ref/contrib/csrf/ ).
 
Et avec mon système ( http://jquery.malsup.com/form/#options-object ), je peux pas rajouter le header x-CSRF (ou en tout cas google dit pas comment)
 
 
'tain j'en ai vraiment plein le cul de ces langage non typés avec de la réflexion dans tous les sens où le code source est inexplorable :/ c'est vraiment write-only :/ quand t'es dev il faut demander soit directement au dev, soit à ceux qui ont déjà demandé au dev.


---------------
trainoo.com, c'est fini
n°2088615
masklinn
í dag viðrar vel til loftárása
Posté le 11-07-2011 à 11:27:48  profilanswer
 

nraynaud a écrit :


ouais, le décorateur je l'ai trouvé, mais j'ai aucune idée de comment l'utiliser sans annoter directement la vue


Un décorateur c'est une fonction, tu as une référence sur la vue dans l'un de tes urls.py, ou bien alors tu fais direct un include? Dans le premier cas tu peux juste wrapper ta vue dans un appel à csrf_exempt.
 

nraynaud a écrit :

bah 1) la protection CSRF sur un proxy on s'en fout 2) je trouve pas le nom du champ à rajouter, j'ai trouvé la valeur à lire dans un cookie sur la doc par contre ( https://docs.djangoproject.com/en/dev/ref/contrib/csrf/ ).


https://docs.djangoproject.com/en/d [...] w-it-works

Citation :

A hidden form field with the name 'csrfmiddlewaretoken' present in all outgoing POST forms. The value of this field is the value of the CSRF cookie.


nraynaud a écrit :

Et avec mon système ( http://jquery.malsup.com/form/#options-object ), je peux pas rajouter le header x-CSRF (ou en tout cas google dit pas comment)


Ça fait un POST via un form du navigateur, donc s'pas possible.

nraynaud a écrit :

langage non typés


 [:zedlefou:1]

Message cité 1 fois
Message édité par masklinn le 11-07-2011 à 11:28:30

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2088621
nraynaud
lol
Posté le 11-07-2011 à 11:34:16  profilanswer
 

masklinn a écrit :


Un décorateur c'est une fonction, tu as une référence sur la vue dans l'un de tes urls.py, ou bien alors tu fais direct un include? Dans le premier cas tu peux juste wrapper ta vue dans un appel à csrf_exempt.


ben dans url.py elle est référencée sous forme de chaine de caractères, (je sais pas pourquoi, j'ai toujours vu ça dans les docs de python).
j'ai tenté de la re-wrapper dans une vue à moi que j'aurai décorée, mais pycharm arrive pas à trouver le namespace httpproxy, je sais pas pourquoi.
 

masklinn a écrit :


https://docs.djangoproject.com/en/d [...] w-it-works

Citation :

A hidden form field with the name 'csrfmiddlewaretoken' present in all outgoing POST forms. The value of this field is the value of the CSRF cookie.




ah merci, j'ai raté ça.
 

masklinn a écrit :


Ça fait un POST via un form du navigateur, donc s'pas possible.


ok, merci.


---------------
trainoo.com, c'est fini
n°2088628
masklinn
í dag viðrar vel til loftárása
Posté le 11-07-2011 à 11:48:18  profilanswer
 

nraynaud a écrit :

ben dans url.py elle est référencée sous forme de chaine de caractères, (je sais pas pourquoi, j'ai toujours vu ça dans les docs de python).


C'est généralement le plus simple, parce que ça évite de se poser des questions sur l'ordre d'initialization et les refs circulaires (la vue est cherchée quand le dispatcher en a besoin, pas quand urls est importé), mais tu peux aussi filer direct un callable (c'est ce que font les nouvelles class-based views par exemple).

nraynaud a écrit :

j'ai tenté de la re-wrapper dans une vue à moi que j'aurai décorée, mais pycharm arrive pas à trouver le namespace httpproxy, je sais pas pourquoi.


Essaies de refresh le projet/interpréteur? Tes paths sont bien setupés? (enfin si c'est un egg je présume que c'est dans ton site-packages donc ça devrait être bon).

 

Accessoirement pas besoin de la re-wrapper, suffit d'avoir un truc genre

 
Code :
  1. from django.views.decorators.csrf import csrf_exempt
  2. from httpproxy.views import proxy
  3. # [...]
  4. url(r'/some/path', csrf_exempt(proxy))


Message édité par masklinn le 11-07-2011 à 11:48:32

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2089436
nraynaud
lol
Posté le 14-07-2011 à 16:51:21  profilanswer
 

dites, en mode DEBUG=False, elle sont sensés sortir où les stacktraces ?  
 
parce que dans error.log d'apache, je vois que l'erreur comme quoi il a pas de trouvé de template 500.html, mais jamais ma vraie erreur.


---------------
trainoo.com, c'est fini
n°2089512
Shinuza
This is unexecpected
Posté le 14-07-2011 à 23:38:22  profilanswer
 

Elles peuvent être loggées par ton gateway. Sinon il faut les configurer avec la configuration du logger
 
(La doc fail chez moi, j'imagine un gros mix http/https qui foire)


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°2089726
Jubijub
Parce que je le VD bien
Posté le 16-07-2011 à 20:10:11  profilanswer
 

Hum...

 

c'est quand meme un peu crade avec Flask de devoir faire un try / except KeyError pour vérifier si une checkbox a été cochée dans un form...

 

un petit helper qui te permettrait de savoir si le champ existe, ou faire que le champ ait une valeur à None aurait été sympa...


Message édité par Jubijub le 16-07-2011 à 20:10:25

---------------
Jubi Photos : Flickr - 500px
n°2089727
masklinn
í dag viðrar vel til loftárása
Posté le 16-07-2011 à 20:11:31  profilanswer
 

1. y u in django thread? This no django problem

 

2. request.form est un MultiDict. Comme les dict standards dont ils héritent, les multidicts ont une méthode .get() qui renvoie un placeholder (None par défaut) si la clé n'est pas trouvée

 

3. http://flask.pocoo.org/docs/patterns/wtforms/

Message cité 1 fois
Message édité par masklinn le 16-07-2011 à 20:14:48

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2089738
Jubijub
Parce que je le VD bien
Posté le 16-07-2011 à 21:20:39  profilanswer
 

masklinn a écrit :

1. y u in django thread? This no django problem

 

2. request.form est un MultiDict. Comme les dict standards dont ils héritent, les multidicts ont une méthode .get() qui renvoie un placeholder (None par défaut) si la clé n'est pas trouvée

 

3. http://flask.pocoo.org/docs/patterns/wtforms/

 

1. Ain't no Flask thread, this is the closest one might get...and I doubt there are enough Flask users down here to justify a brand new one
2. hum...aucun exemple n'en parle...
3. yep, je crois que je vais avoir du mal à m'en passer...

Message cité 1 fois
Message édité par Jubijub le 16-07-2011 à 21:21:21

---------------
Jubi Photos : Flickr - 500px
n°2089739
masklinn
í dag viðrar vel til loftárása
Posté le 16-07-2011 à 21:46:38  profilanswer
 

Jubijub a écrit :

2. hum...aucun exemple n'en parle...


1. la doc en parle
2. ça aurait un peu tendance à être parfaitement logique, quand t'as un mapping il va généralement avoir .get en plus de __getitem__ (ça fait même partie de l'ABC correspondante). Et quand c'est une classe héritée de dict il ne peut qu'avoir un .get
3. tu l'as sur request.args, il serait con d'utiliser des objets différents pour deux trucs quasi identiques


Message édité par masklinn le 16-07-2011 à 21:48:37

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2089756
SekYo
Posté le 17-07-2011 à 11:28:18  profilanswer
 

Tiens d'ailleurs, c'est quoi les autres FW web python sympas (a part webpy) et quels sont leurs usages ? Genre pourquoi avoir choisi Flask et pas Django par exemple ?

n°2089758
Jubijub
Parce que je le VD bien
Posté le 17-07-2011 à 11:54:47  profilanswer
 

SekYo a écrit :

Tiens d'ailleurs, c'est quoi les autres FW web python sympas (a part webpy) et quels sont leurs usages ? Genre pourquoi avoir choisi Flask et pas Django par exemple ?

 

La rapidité incroyable de prototypage... Il te faut un import et 2 lignes de code pour avoir un mini serveur qui répond a une requête...

 

Sinon ça fait longtemps que je voulais me remettre a dev :
J'ai réessayé en java et ait fini par abandonner : très lourd, verbeux, hibernate et spring très lourds pour ce que je voulais.
J'ai ensuite essayé Django, et idem : rien que faire le tuto m'a pris le temps de construire ma première page utile avec Flask !

 

Django j'y viendrai surement, mais par la suite. Pour débuter avec python Flask est terriblement plus accessible, et plus fun de ce fait. Du coup ça me décourage pas, et j'y travaille régulièrement...(je suis CdP donc faire du dev c pas une obligation pro)


---------------
Jubi Photos : Flickr - 500px
n°2089762
Shinuza
This is unexecpected
Posté le 17-07-2011 à 12:43:00  profilanswer
 

SekYo a écrit :

Tiens d'ailleurs, c'est quoi les autres FW web python sympas (a part webpy) et quels sont leurs usages ? Genre pourquoi avoir choisi Flask et pas Django par exemple ?

La vocation de Flask c'est de faire des choses simples rapidement avec un minimm de configuration, c'est adapté pour une petite webapp ou un webservice simple. Y'a Bottle aussi, mais j'ai jamais tenté.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°2089774
Jubijub
Parce que je le VD bien
Posté le 17-07-2011 à 15:42:29  profilanswer
 

Shinuza a écrit :

La vocation de Flask c'est de faire des choses simples rapidement avec un minimm de configuration, c'est adapté pour une petite webapp ou un webservice simple. Y'a Bottle aussi, mais j'ai jamais tenté.


Bottle j'ai regardé, ca m'a pas attiré : la doc est moins claire, ça parait un peu plus verbeux... Et Flask semble assez suivi, tu trouves facilement les réponses a tes questions...


---------------
Jubi Photos : Flickr - 500px
n°2090412
el muchach​o
Comfortably Numb
Posté le 20-07-2011 à 15:31:37  profilanswer
 

Des outils pour monitorer la RAM du process Python, et les memleaks, vous connaissez ?


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2090414
SekYo
Posté le 20-07-2011 à 15:36:49  profilanswer
 

Perso les deux seules fois ou j'ai eu de gros problèmes de fuites mémoires par évident à trouver, j'utilisais le module hotshot et kcachegrind pour visualiser la sortie.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8

Aller à :
Ajouter une réponse
 

Sujets relatifs
Blabla@Progue[Topic unique] .Net @ Prog
Page Jsp qui affiche le ${ blabla }case in blabla (KSH) ===> fichier CSV
BlaBla@SQLProblème de configuration MySQL sur Django
Suivant / Précédant dans appli js (non c'est pas history.blabla ...)Blabla@Python \o/
SBP: le Système d'unités de Blabla@Prog 
Plus de sujets relatifs à : blabla@django


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)