Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Coming from Django or Rails

A guide for Django and Ruby on Rails developers moving to a PHP framework with a CMS built in - URLconf and routes, views and controllers, the ORM and migrations, the Django admin, templates, signals and callbacks…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/web-framework-developers/coming-from-django-and-rails.md

On this page

Coming from Django or Rails

This page is for developers who know Django or Rails and are new to PHP or to Exponential. Both frameworks share Exponential's spirit of "batteries included": Django ships an admin, Rails ships generators and conventions. Exponential ships an editorial administration, a content model with versions and translations, permissions, and a template language.

Contents

  1. Side by side
  2. The admin you already know, and more
  3. PHP for Python and Ruby developers
  4. What you will miss

Side by side

DjangoRailsExponential 6Page
urls.pyconfig/routes.rbmodule.php, URL aliasesRouting
viewscontrollersmodule viewsControllers
templates (DTL, Jinja)ERBthe template languageThe view layer
models, ORMActiveRecordcontent classes; eZPersistentObjectThe content model
migrationsmigrations.dba files and upgrade scriptsMigrations
settings.pyconfig/environments/*.rbINI files, EXP_ENVConfiguration
middlewareRack middleware, filtersrequest rules, listenersMiddleware
signalscallbacksezpEvent, workflowsEvents
manage.py commandsbin/rails, rakebin/php/consoleCommand line
CeleryActive Job, SidekiqexpqueueQueues
contrib.auth, permissionsDevise, Punditusers as content, roles and policiesAuthentication, Authorization
sites frameworkmultiple apps or enginessiteaccessesSiteaccesses
gettextI18n.ts catalogues, translated contentTranslations
Gunicorn, UvicornPumaPHP-FPM, Velocity, FrankenPHPServers and deployment

The admin you already know, and more

The Django admin generates forms for models; Exponential's administration is built for editors rather than developers: a content tree, drafts and versions, translations side by side, a rich text editor, image variations, approval workflows, a page builder, a trash, an audit trail and roles. Content-first Python and Ruby CMSs exist too; if you know one, Exponential's content classes will feel natural. Start with the administration tour before writing code.

PHP for Python and Ruby developers

  • Each request starts from index.php; under PHP-FPM nothing survives between requests, under Velocity the workers persist like a Gunicorn or Puma worker would (The request lifecycle).
  • Composer is the package manager (pip, Bundler) and Packagist the index.
  • Arrays are both lists and dictionaries; much configuration in module.php and definition() is arrays.
  • Naming: kernel classes use the eZ prefix, the project's new code uses exp, and your own classes take a prefix of your organization or extension (Autoloads and class naming).
  • The PHP developers' pages cover the language side (PHP developers: start here).

What you will miss

  • Model-driven migrations generated from code changes.
  • A model-to-form layer like Django forms or form_with.
  • An in-process test client.
  • Generators for every piece; the RAD tools cover the common ones (RAD tools).

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x