blabla@django - Python - Programmation
Marsh Posté le 14-02-2011 à 14:44:34
if settings.DEBUG: |
dites, l'indentation est pas sensée compter ? pourquoi PyCharm me met qu'un espace de décalage avant les '{' ? c'est chiant, je le vois pas.
Marsh Posté le 14-02-2011 à 15:05:14
nraynaud a écrit :
|
Pas dans des parenthèses, ça serait con
nraynaud a écrit : pourquoi PyCharm me met qu'un espace de décalage avant les '{' ? c'est chiant, je le vois pas. |
Il met tous les params au même étage, mets la chaîne vide à la ligne.
Marsh Posté le 14-02-2011 à 15:10:55
masklinn a écrit : |
admettons (j'te révoquerai des cartes du NSDAP moi ...)
masklinn a écrit : Il met tous les params au même étage, mets la chaîne vide à la ligne. |
il me garde quand même qu'un espace d'écart pour la continuation.
Marsh Posté le 14-02-2011 à 15:13:07
nraynaud a écrit : |
L'espace c'est pas un truc con genre "y'a toujours un espace après une virgule dans un tuple" ?
Marsh Posté le 14-02-2011 à 15:16:52
nraynaud a écrit :
|
Ah oui j'ai ratal que tu t'étonnais sur le contenu des tuples
Il aligne le dict avec le premier élément du tuple (la chaîne) pas avec la parentèse d'ouverture du tuple (qui donnerait l'impression que ton dict est en dehors)
Si tu utilisais url tu voudrais pas:
Code :
|
si?
Marsh Posté le 14-02-2011 à 15:24:09
non, je voudrai
if settings.DEBUG: |
pour pas rater la continuation
mais c'est bizarre, j'ai "continuation" à 8 dans pycharm et pourtant il tente un alignement.
Marsh Posté le 14-02-2011 à 15:30:41
nraynaud a écrit : non, je voudrai
|
Mais à ce moment là ce serait
if settings.DEBUG: |
Marsh Posté le 14-02-2011 à 15:34:11
oui voilà, ben comment j'ai ça ?
Marsh Posté le 14-02-2011 à 15:36:02
J'en sais rien je connais pas pyCharm
Marsh Posté le 14-02-2011 à 15:45:41
Chais pas non plus.
Marsh Posté le 14-02-2011 à 15:50:16
ReplyMarsh Posté le 14-02-2011 à 17:06:17
dites les gens, dans mon modèle j'ai :
class Map(models.Model): def file_url(self): |
dans maintenant, dans ma vue, je veux l'URL publique absolue du fichier (c'est un kml et google maps aime pas trop les trucs relatifs), comment je fais ?
pour l'instant j'ai :
|
mais ça me renvoie juste "attachments/lol.kmz" au lieu de http://blabla...
edit : réponse: il faut configurer MEDIA_URL dans settings.py
Marsh Posté le 14-02-2011 à 17:35:46
dites les guignols, j'ai une variable de config (SITE_URL) qui est différente entre la prod et le dev, mais tout le reste de la conf est le même mais qui en dépend (MEDIA_URL = SITE_URL + 'media/').
comment vous gérez ça ?
Marsh Posté le 14-02-2011 à 18:07:57
Chais pas trop comment faire un truc élégant, mais sinon un truc du genre devrait marchouiller :
settings_base.py
Code :
|
settings.py
Code :
|
settings_dev.py
Code :
|
Marsh Posté le 14-02-2011 à 19:05:09
nraynaud a écrit : dites les guignols, j'ai une variable de config (SITE_URL) qui est différente entre la prod et le dev, mais tout le reste de la conf est le même mais qui en dépend (MEDIA_URL = SITE_URL + 'media/'). |
J'ai vu deux options en gros :
1) Soit tu utilises deux settings, un pour le dev, un pour la prod et en dev tu charges ton serveur avec un :
Code :
|
2) Soit tu modifies le settings.py pour aller chercher la valeur des options dans un fichier de conf externe, via une petite fonction type celle de 0x90. Nous on a ça, avec un seul fichiers de conf (non versionné - enfin le squelette est versionné pour les nouveaux -). Chaque poste modifie son .conf avec ses chemins, IP, port etc...
Marsh Posté le 15-02-2011 à 06:48:52
http://stackoverflow.com/questions [...] r-hostname
ça a l'air intéressant
Marsh Posté le 15-02-2011 à 10:19:54
Ceux qui font du django, c'est quoi vos plugins favoris ?
Pour l'instant j'ai
* south pour la migration de schéma/données, utilisé sur plusieurs projets
* django debug toolbar, mais tellement obvious celui là
Et pour différents projets persos, je suis en train de jouer avec
* django-compress pour tout ce qui est gestion du CSS/JS
* django-celery pour gérer des tâches asynchrones (pour remplacer tout ce qui devrait être fait via du crontab c'est pas mal notamment)
Qui m'a foi m'ont l'air pas mal du tout (mais très peu de recul sur ces deux là, projets persos pas encore online)
Marsh Posté le 15-02-2011 à 10:23:54
0x90 a écrit : Chais pas trop comment faire un truc élégant, mais sinon un truc du genre devrait marchouiller :
|
SekYo a écrit :
|
dites, est-ce que je peux passer ma valeur particulière par une variable d'environnement vers une variable de settings.py ? j'ai l'impression que mod_wsgi et pycharm me permettent tous les 2 d'en passer une.
comment je la récupère dans django ?
Marsh Posté le 15-02-2011 à 10:29:45
C'est dans le link que t'as drop plus haut sur Stack
Code :
|
Où os.environ est un dictionnaire.
NB : Au fait, tu devrais essayer le shell ipython, a mon avis plus sympa que le shell de base.
Marsh Posté le 15-02-2011 à 11:01:36
nraynaud a écrit : |
Tu va préférer une variable global sur tout le processus plutôt qu'un appel de fonction ? étrange.
Marsh Posté le 15-02-2011 à 20:52:07
nraynaud a écrit : |
en fait c'est nul comme idée parce que le manage.py a besoin de la variable après car il lit le settings.py.
Marsh Posté le 15-02-2011 à 22:45:41
dites, sur ma machine de test, j'ai les css de l'admin qui s'affichent bien, mais sur celle de prod, elles s'affichent pas.
la conf est la même sur les 2:
|
et sur le site de prod, avec le debug activé, j'ai :
Using the URLconf defined in urls, Django tried these URL patterns, in this order: |
ce qui peut paraître logique, mais
1) en local j'ai pas non plus admin_media dans le url.py et j'ai mes CSS (donc je peux pas débugger)
2) dans le code du serveur HTTP, il a l'air de router de manière un peu forcée les requêtes vers ADMIN_MEDIA_PREFIX (ce que j'ai l'impression de comprendre de la dernière classe dans basehttp.py)
any idea ?
Marsh Posté le 15-02-2011 à 22:51:50
Hum curieux., mais c'est vrai que les ADMIN_MEDIA & co sont assez chiants. Tu peux pas simplement ajouter admin_media dans le urls.py pour qu'il soit servi via le django.views.static.serve ?
Ceci étant, en prod, une bonne technique est de mapper tes dossiers de fichiers statiques directement dans la conf de apache/nginx pour qu'ils soient servis direct par le serveur web, sans passer par django. Les perfs n'ont rien à voir
Marsh Posté le 15-02-2011 à 22:55:25
ouais, on me l'a déjà dit, mais avant de complexifier encore plus le déploiement, j'aimerai avoir un peu de fonc.
je peux tenter le truc static, mais j'aurai aimé avoir un peux de feedback d'abord.
elle sont loggées où les erreurs par défaut dans mod_wsgi ?
Marsh Posté le 15-02-2011 à 23:05:55
http://docs.djangoproject.com/en/d [...] dmin-files
Au passage, depuis la version 1.3 de django (enfin la dev) django-staticfiles a été intégré, et ce truc permet (entre autre) de gérer static/ et media/ de manière automatique comme c'est le cas pour admin-media/, c'est peut-être plus clean que la vue statique à coup de "if settings.DEBUG". En bonus ça gère le rangement des fichiers statiques par app, et c'est bien cool
Marsh Posté le 16-02-2011 à 09:15:34
0x90 a écrit : http://docs.djangoproject.com/en/d [...] dmin-files |
ok, merci.
c'est relou ces serveurs qui se comportent différemment suivant le contexte pour débuter.
Marsh Posté le 16-02-2011 à 09:41:31
nraynaud a écrit : |
J'avais jamais fait gaffe pour l'admin, c'est étonnant qu'ils aient laissé un truc magique comme ça dans django
Marsh Posté le 28-02-2011 à 12:19:16
dites les jeunes, je veux mettre un ID aléatoire à mes entités, vous avez une idée de la chose ?
Ce que je trouve sur le net ne me plait pas trop, genre laisser l'ID séquentiel et utiliser un autre champ (mais y'a un risque de leaker les IDs quand même) ou hasher l'ID séquentiel (même pb).
Je voudrais générer un ID aléatoire en python, tenter de sauver le modèle comme ça et si ça fait une erreur de clef dupliquée re-tenter avec un autre ID.
Marsh Posté le 28-02-2011 à 12:43:54
nraynaud a écrit : dites les jeunes, je veux mettre un ID aléatoire à mes entités, vous avez une idée de la chose ? |
uuid?
Si tu utilises django-extensions il y a un UUIDField inclus normalement
Marsh Posté le 28-02-2011 à 12:47:25
masklinn a écrit : |
trop long, c'est pour un truc genre imgur.com
Marsh Posté le 28-02-2011 à 12:50:25
nraynaud a écrit : |
Section d'un hash d'un UUID alors? L'UUID fournit le random, mais je sais pas si tu peux les sectionner, par contre un hash tu peux normalement.
Sinon demandes à nazztazz comment il fait.
Ou alors, hash ou checksum de ta resource, comme ça t'as une détection de duplicats "gratos".
Marsh Posté le 28-02-2011 à 13:01:05
masklinn a écrit : |
en fait ça répond pas à la question de comment je branche le merdier dans django et j'évite les duplications et les race conditions.
Marsh Posté le 28-02-2011 à 13:20:01
nraynaud a écrit : en fait ça répond pas à la question de comment je branche le merdier dans django |
Tu crées un field custom qui va bien et tu le fous dans ton modèle avec primary_key=True?
nraynaud a écrit : et j'évite les duplications et les race conditions. |
Tu regardes si ça pète quand ça arrive en DB? Si c'est une PK ou une UNIQUE ça devrait être bon, et de toute façon si tu utilises un truc avec beaucoup d'entropie à la base il y a peu de chances que tu aies le problème.
Marsh Posté le 28-02-2011 à 13:29:21
masklinn a écrit : |
de base si y'a collision le système fait un update (oui, il fait un roundtrip avant chaque requête pour savoir s'il update ou insert)
masklinn a écrit : |
justement, comment je me branche dans le merdier ?
Si je poste ici c'est pour avoir des pointeurs de doc ou du code, je suis assez grand pour l'algo, merci.
Marsh Posté le 28-02-2011 à 13:33:33
nraynaud a écrit : justement, comment je me branche dans le merdier ? Si je poste ici c'est pour avoir des pointeurs de doc ou du code, je suis assez grand pour l'algo, merci. |
Tu te fous de la gueule du monde un peu non? T'es "assez grand pour l'algo" mais t'es pas assez grand pour trouver une page appelée Writing custom model fields dans la doc officielle? Qui est le premier résultat quand tu colles "django custom field" dans google? Suivie de 2-3 tutos sur le sujet?
Marsh Posté le 28-02-2011 à 13:37:42
masklinn a écrit : |
peut-être que je n'ai pas trouvé sur cette page l'info que je cherche ?
peut-être que quelqu'un a une approche moins agressive et plus originale que ça dans django.
peut-être que tu me saoules, tu sais très bien que je capte rien à la bibliothèque, mais que maîtrise assez bien certains trucs, plus que ce que je vois dans le code du framework par exemple.
Marsh Posté le 28-02-2011 à 13:44:56
nraynaud a écrit : peut-être que je n'ai pas trouvé sur cette page l'info que je cherche ? |
peut-être que dans ce cas tu auras pu l'indiquer? Parce que ta question "comment je me branche dans Django", la page semble assez bien y répondre. Si t'as un problème plus précis que ça, comment je peux savoir ce qu'il est si tu n'as rien dit à son sujet?
nraynaud a écrit : peut-être que quelqu'un a une approche moins agressive et plus originale que ça dans django. |
Moins aggressive et plus originale que "je veux un champ custom et il y a une page qui m'explique comment on crée un champ custom"?
nraynaud a écrit : tu sais très bien que je capte rien à la bibliothèque |
Non je le sais pas putain, comment tu veux que je le sache? Je sais pas comment tu fonctionnes précisément et django ne m'a jamais posé de problèmes personnellement, d'où je tirerais que "tu capte rien à la bibliothèque"? Ou à quoi dans la bibliothèque? D'autant plus quand j'ai tendance à pas te considérer comme étant con ou ayant des difficultés spécifiques, j'ai pas spécialement de raisons de penser ça et tes précédentes requêtes se placent assez largement dans un cadre "j'ai commencé à regarder ce truc il y a moins de 2 semaines donc je suis encore un peu paumé".
Marsh Posté le 14-02-2011 à 14:43:18
hop, c'est fait.
---------------
trainoo.com, c'est fini