4 votes

Cadre web simple et efficace

Je suis à la recherche d'un framework web multiplateforme adapté (si c'est le terme approprié). J'ai besoin de quelque chose qui ne dépend pas de la connaissance de l'adresse du serveur ou du chemin absolu des fichiers. Idéalement, il devrait venir avec un serveur (de développement) et être largement supporté.

J'ai déjà essayé PHP, Django et web2py. Django avait un panneau d'administration, nécessitait trop d'informations (comme l'adresse ou l'ip du serveur) et semblait désagréable à utiliser; PHP avait des conflits de chown et chmod avec le serveur (le code ne pouvait pas accéder aux fichiers téléchargés ou vice versa) et ne pouvait pas gérer correctement les urls; web2py plantait lors de la compilation et le manuel ne couvrait pas cela - sans parler du fait qu'il nécessitait l'utilisation du panneau d'administration. Python est probablement la voie à suivre, mais même la quantité de différents frameworks web et distributions pour Python est trop importante pour que je les installe et les teste individuellement.

Ce dont j'ai besoin est un langage de développement web simple et efficace multiplateforme qui fonctionne pratiquement partout. Pas de panneaux d'administration inutiles, pas d'interfaces utilisateur sophistiquées, pas de bases de données (nécessairement), pas de restrictions comme les utilisateurs/accès/niveaux et certainement pas de "Web 2.0" (car je déteste ce retronyme). Juste un puissant analyseur de fichiers et de requêtes.

Je suis habitué à programmer en C et dans d'autres langages de bas niveau, donc la difficulté n'est pas un problème.

5voto

Daniel Roseman Points 199743

Cette question est basée sur un échec complet à comprendre l'un des outils que vous avez apparemment "étudiés", ou même le web serving en général.

Django a un panneau d'administration? Eh bien, ne l'utilisez pas si vous ne voulez pas. Il n'y a aucune configuration à faire là-bas, c'est pour gérer vos données si vous le voulez.

PHP a des problèmes de chown? PHP est un langage, pas un framework. Si vous essayez d'exécuter quelque chose avec lui, vous devrez définir les permissions de manière appropriée. Ce serait le cas quel que soit le langage que vous utilisez.

Vous voulez quelque chose qui n'a pas besoin de connaître son adresse ou l'emplacement de ses fichiers? Que veut dire cela? Si vous configurez un serveur web, il doit savoir à quelle adresse répondre. Ensuite, il doit savoir quel code exécuter en réponse à une demande. Sans configurer quelque part l'adresse et le chemin d'accès aux fichiers, rien ne peut jamais se produire.

4voto

mdipierro Points 3552

Dans web2py, vous n'avez pas besoin d'utiliser l'interface admin. C'est optionnel. Voici comment créer une application simple à partir de zéro :

 wget http://web2py.com/examples/static/web2py_src.zip
 unzip web2py_src.zip
 cd web2py/applications
 mkdir myapp
 cp -r ../welcome/* ./

Facultatif : Éditez votre application

 emacs controllers/default.py 
 emacs models/db.py 
 emacs views/default/index.html
 ...

(vous pouvez supprimer tout ce dont vous n'avez pas besoin). Maintenant exécutez web2py et essayez-le

 cd ../..
 python web2py.py -i 127.0.0.1 -p 8000 -a chooseapassword &
 wget http://127.0.0.1:8000/myapp/default/index.html

Lorsque vous modifiez controller/default.py, vous avez par exemple un contrôleur

 def index():
      the_input = request.vars # ceci est analysé à partir de l'URL
      return dict(a=3,b=5,c="bonjour")

Vous pouvez renvoyer un dictionnaire (qui sera analysé par la vue portant le même nom que l'action) ou une chaîne de caractères (le contenu réel de la page). Par exemple :

 def index():
      name = request.vars.name or 'anonyme'
      return "bonjour "+name

et appelez

 wget http://127.0.0.1:8000/myapp/default/index?name=Max

renvoie

 'bonjour Max'

/myapp/default/index?name=Max appelle la fonction index, du contrôleur default.py de l'application dans le dossier applications/myapp/ et passe name=Max dans request.vars.name='Max'.

2voto

Pekka 웃 Points 249607

Je pense que vous devez être plus spécifique sur ce que vous voulez réaliser et quel(s) type(s) de produit(s) vous voulez développer. Un produit "sans configuration requise" peut venir avec beaucoup de configuration automatique inutile, tandis qu'un framework nécessitant un petit fichier de configuration pourrait être configuré en quelques minutes, avec beaucoup plus de simplicité à long terme. Il y aura toujours des considérations de sécurité et de droits d'accès à prendre en compte, simplement parce que le web est un endroit ouvert.

De plus, un framework supportant des choses dans l'esprit du Web 2.0 n'a pas nécessairement à être automatiquement un mauvais framework. Ne rejetez pas de bonnes options parce qu'elles font aussi des choses que vous n'aimez pas ou dont vous n'avez pas besoin, tant qu'elles vous permettent de travailler sans elles.

PHP avait des conflits de chown et de chmod avec le serveur (le code ne pouvait pas accéder aux fichiers téléchargés ou vice versa) et ne pouvait pas gérer correctement les URL;

PHP n'est pas un framework en soi, c'est un langage de programmation. Je ne sais pas quel framework ou produit basé sur PHP vous avez essayé, mais tous les problèmes que vous décrivez sont résolubles et ne sont pas propres à PHP. Si vous aimez le langage, peut-être devriez-vous lui donner une autre chance. Questions connexes sur SO :

Si vous avez besoin de quelque chose qui fonctionne partout (c'est-à-dire sur autant de serveurs que possible), PHP sera naturellement votre premier choix, simplement parce qu'il bat tous les autres plates-formes en termes de disponibilité d'hébergement bon marché.

Si j'étais vous, je ne limiterais pas autant mes options à ce stade. J'entends beaucoup de bonnes choses sur Django, par exemple. De plus, le Google App Engine est une plate-forme intéressante et évolutive pour travailler sur le web, prenant en charge plusieurs langages.

1voto

Messa Points 5988

Werkzeug:

import werkzeug

@werkzeug.Request.application
def app(request):
  return werkzeug.Response("Bonjour, le monde!")

werkzeug.run_simple("0.0.0.0", 4000, app)

Vous pouvez éventuellement utiliser le routage d'URL de werkzeug (ou le vôtre, ou tout ce qui provient d'un autre framework). Vous pouvez utiliser n'importe quel ORM ou moteur de modèle pour Python que vous souhaitez (y compris ceux d'autres frameworks Python), etc.

Fondamentalement, ce ne sont que des objets Request et Response construits autour de WSGI ainsi que des utilitaires. Il existe d'autres bibliothèques similaires disponibles en Python (comme par exemple webob ou CherryPy).

1voto

FuePi Points 541

Ce dont j'ai besoin est un langage de développement web simple et efficace, compatible avec plusieurs plateformes et fonctionnant à peu près partout.

Avez-vous essayé HTML?

Mais sérieusement, je pense que Pekka a raison quand il dit que vous devez spécifier et clarifier ce que vous voulez. La plupart des fonctionnalités que vous ne voulez pas sont des modules standard d'une application web (gestion des utilisateurs et des rôles, liaison de données, persistence, interfaces).

Nous utilisons un ou plusieurs des langages suivants selon les exigences du client : Perl, PHP, Flash, Moonlight, JSP, JavaScript, Java, (D/X)HTML, zk.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X