From b55b29c891b6b6b692d3e39f49875163a21e896e Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Mon, 18 Jul 2005 23:14:48 +0000 Subject: [PATCH] Changed tutorial2 to use 'django-admin runserver' instead of mod_python. Also updated WSGI mentions in the docs, now that we're WSGI-friendly. git-svn-id: http://code.djangoproject.com/svn/django/trunk@187 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/faq.txt | 56 +++++++++++++++++++------------ docs/install.txt | 20 ++++++----- docs/tutorial02.txt | 81 ++++++++++----------------------------------- 3 files changed, 64 insertions(+), 93 deletions(-) diff --git a/docs/faq.txt b/docs/faq.txt index 29cc3696c8..b7ca2169a6 100644 --- a/docs/faq.txt +++ b/docs/faq.txt @@ -21,7 +21,6 @@ able to give something back to the open-source community. .. _Python: http://www.python.org/ .. _PostgreSQL: http://www.postgresql.org/ - What does "Django" mean, and how do you pronounce it? ----------------------------------------------------- @@ -97,8 +96,8 @@ Lawrence, Kansas, USA. Django appears to be a MVC framework, but you call the Controller the "view", and the View the "template". How come you don't use the standard names? ----------------------------------------------------------------------------------------------------------------------------------------------------- -That's because Django isn't strictly a MVC framework. We don't really believe in -any capital-M Methodologies; we do what "feels" right. If you squint the right +That's because Django isn't strictly a MVC framework. We don't really believe in +any capital-M Methodologies; we do what "feels" right. If you squint the right way, you can call Django's ORM the "Model", the view functions the "View", and the dynamically-generated API the "Controller" -- but not really. @@ -109,7 +108,7 @@ where it makes sense. Do you have any of those nifty "screencast" things? --------------------------------------------------- -They're in the works. It's amazing how much time those things take! Stay tuned... +They're in the works. It's amazing how much time those things take! Stay tuned... Installation questions ====================== @@ -120,13 +119,14 @@ How do I get started? #. `Download the code`_. #. Install Django (read the `installation guide`_). #. Walk through the tutorial_. - #. Check out the rest of the documentation_, and ask questions if you + #. Check out the rest of the documentation_, and `ask questions`_ if you run into trouble. .. _`Download the code`: http://www.djangoproject.com/download/ .. _`installation guide`: http://www.djangoproject.com/documentation/install/ .. _tutorial: http://www.djangoproject.com/documentation/tutorial1/ .. _documentation: http://www.djangoproject.com/documentation/ +.. _ask questions: http://www.djangoproject.com/community/ How do I fix the "install a later version of setuptools" error? --------------------------------------------------------------- @@ -136,7 +136,13 @@ Just run the ``ex_setup.py`` script in the Django distribution. What are Django's prerequisites? -------------------------------- -Django requires Python_ 2.3 or later, `Apache 2`_, and mod_python_. +Django requires Python_ 2.3 or later. + +For a development environment -- if you just want to experiment with Django -- +you don't need to have a separate Web server installed; Django comes with its +own lightweight development server. For a production environment, we recommend +`Apache 2`_ and mod_python_, although Django follows the WSGI_ spec, which +means it can run on a variety of server platforms. You'll also need a database engine. PostgreSQL_ is recommended, and MySQL_ is supported. @@ -144,18 +150,32 @@ supported. .. _Python: http://www.python.org/ .. _Apache 2: http://httpd.apache.org/ .. _mod_python: http://www.modpython.org/ +.. _WSGI: http://www.python.org/peps/pep-0333.html .. _PostgreSQL: http://www.postgresql.org/ .. _MySQL: http://www.mysql.com/ +Do I have to use mod_python? +---------------------------- + +Not if you just want to play around and develop things on your local computer. +Django comes with its own Web server, and things should Just Work. + +For production use, though, we recommend mod_python. The Django developers have +been running it on mod_python for about two years, and it's quite stable. + +However, if you don't want to use mod_python, you can use a different server, +as long as that server has WSGI_ hooks. More information on alternate server +arrangements is forthcoming. + +.. _WSGI: http://www.python.org/peps/pep-0333.html + How do I install mod_python on Windows? --------------------------------------- - * If you are running Python 2.4, check out this `guide to mod_python & Python 2.3`_. - - * For Python 2.3, grab mod_python from http://www.mod_python.org/, the read - `Running mod_python on Apache on Windows2000`_. - - * Also try this (not Windows-specific) `guide to getting mod_python working`_. +* For Python 2.4, check out this `guide to mod_python & Python 2.3`_. +* For Python 2.3, grab mod_python from http://www.mod_python.org/ and read + `Running mod_python on Apache on Windows2000`_. +* Also, try this (not Windows-specific) `guide to getting mod_python working`_. .. _`guide to mod_python & Python 2.3`: http://www.lehuen.com/nicolas/index.php/2005/02/21/39-win32-build-of-mod_python-314-for-python-24 .. _`Running mod_python on Apache on Windows2000`: http://groups-beta.google.com/group/comp.lang.python/msg/139af8c83a5a9d4f @@ -163,19 +183,12 @@ How do I install mod_python on Windows? (Thanks to deelan for this info.) -Do I have to use mod_python? ----------------------------- - -In the first release, yes. However, WSGI_ support (which will let Django run -under FCGI, SCGI, medusa, etc.) is in the works. Stay tuned! - -.. _WSGI: http://www.python.org/peps/pep-0333.html - Will Django run under shared hosting (like TextDrive or Dreamhost)? ------------------------------------------------------------------- Right now, no, unless you can get your host to install mod_python. However, as -the previous answer says, WSGI support is coming! +the community starts to use Django's WSGI bindings with other Web servers, this +will probably be possible sooner rather than later. Using Django ============ @@ -244,4 +257,3 @@ be possible by editing the CSS stylesheet. We've got a `guide to the CSS used in the admin`_ to get you started. .. _`guide to the CSS used in the admin`: http://www.djangoproject.com/documentation/admin_css/ - diff --git a/docs/install.txt b/docs/install.txt index 0fef32973d..5dbc1860d2 100644 --- a/docs/install.txt +++ b/docs/install.txt @@ -7,16 +7,20 @@ This document will get you up and running with Django. Install Apache and mod_python ============================= -Currently, Django runs on Apache_ with `mod_python`_. mod_python is similar to -mod_perl -- it embeds Python within Apache and loads Python code into memory -when the server starts. Code stays in memory throughout the life of an Apache -process, which leads to significant performance gains over CGI. +If you just want to experiment with Django, skip this step. Django comes with +its own Web server for development purposes. -If you can't use mod_python for some reason, fear not: We're planning full WSGI_ -support, which means Django will run on a variety of server platforms. +If you want to use Django on a production site, use Apache with `mod_python`_. +mod_python is similar to mod_perl -- it embeds Python within Apache and loads +Python code into memory when the server starts. Code stays in memory throughout +the life of an Apache process, which leads to significant performance gains +over other server arrangements. Make sure you have Apache installed, with the +mod_python module activated. -For the time being, make sure you have Apache installed, with the mod_python -module activated. +If you can't use mod_python for some reason, fear not: Django follows the WSGI_ +spec, which allows it to run on a variety of server platforms. As people +experiment with different server platforms, we'll update this document to +give specific installation instructions for each platform. .. _Apache: http://httpd.apache.org/ .. _mod_python: http://www.modpython.org/ diff --git a/docs/tutorial02.txt b/docs/tutorial02.txt index accf88abee..984c65b2ed 100644 --- a/docs/tutorial02.txt +++ b/docs/tutorial02.txt @@ -25,78 +25,36 @@ interface for site administrators to edit content. The admin isn't necessarily intended to be used by site visitors; it's for site managers. -Expose the admin media files +Start the development server ============================ -Django's admin is intended to be fully functional and good looking. For that -reason, Django ships with admin media files -- CSS, JavaScript and images -- -that comprise the admin's design. To set up a Django admin instance, the first -thing to do is put those media files online somewhere. +To make things easy, Django comes with a pure-Python Web server that builds on +the BaseHTTPServer included in Python's standard library. Let's start the +server and explore the admin site. First, set the ``DJANGO_SETTINGS_MODULE`` +environment variable to the location of your admin settings:: -(Note: Although Django ships with a default design for its admin site, you can -change it however you'd like. The admin uses Django's own template system and -is powered -- surprise, surprise -- by Django itself, so it is completely -customizable.) + export DJANGO_SETTINGS_MODULE=myproject.settings.admin -The files are in the ``media`` directory of the Django distribution. To -"activate" them, copy that directory under a Web document root somewhere, so -that you can access them via the Web. +Then, run this command to start the server:: -Be careful not to put your Python source code under the Web document root. Just -do the media files. + django-admin.py runserver -Then, tell Django where you put them, via ``ADMIN_MEDIA_PREFIX`` in the -``myproject.settings.admin`` settings file. Examples:: +It'll start a Web server running locally -- on port 8000, by default. If you +want to change the server's port, pass it as a command-line argument:: - # You can leave off the domain if they're on the same domain as your admin - # site will be. - ADMIN_MEDIA_PREFIX = '/adminmedia/' + django-admin.py runserver 8080 - # Otherwise, use the fully-qualified domain. - ADMIN_MEDIA_PREFIX = 'http://www.foo.com/adminmedia/' - -Make sure to include a trailing slash. - -Hook into mod_python -==================== - -Now let's take the opportunity to hook Django into Apache/mod_python. Edit your -``httpd.conf`` file and add this:: - - - SetHandler python-program - PythonHandler django.core.handlers.modpython - SetEnv DJANGO_SETTINGS_MODULE myproject.settings.admin - PythonDebug On - - -This tells Apache: "Use mod_python for any URL at or under '/admin/', using the -Django mod_python handler." It also passes the value of ``DJANGO_SETTINGS_MODULE``, -so mod_python knows which project to use. Note that we're passing the path to -the ``admin`` settings, not the ``main`` settings. That's because this is the -admin site, which has slightly different settings. - -Also, if you've manually altered your ``PYTHONPATH`` to put your project on it, -you'll need to tell mod_python:: - - PythonPath "['/path/to/project'] + sys.path" - -You can also add directives such as ``PythonAutoReload Off`` for performance. -See the `mod_python documentation`_ for a full list of options. - -When you've done that, restart Apache and go to /admin/ on your domain. You -should see the admin's login screen: +Now, open a Web browser and go to "/admin/" on your domain. You should see the +admin's login screen: .. image:: http://media.djangoproject.com/img/doc/tutorial/admin01.png :alt: Django admin login screen -.. _mod_python documentation: http://modpython.org/live/current/doc-html/directives.html - Create a user account ===================== -We can't log in, though, because we haven't created an admin user account yet. -Drop into the Python interactive interpreter and type this:: +You can't log in, though, because you haven't created an admin user account +yet. Drop into the Python interactive interpreter and type this:: # The function django.models.auth.users.create_user() creates a new user # and returns the new auth.User object. @@ -151,12 +109,9 @@ file and make the following change to add an ``admin`` attribute:: ), ) -Reload the Django admin index page. Note that you might have to restart Apache, -depending on your Apache settings. Because mod_python saves code in memory for -performance, Python code changes generally aren't reflected until Apache -restarts. One way around this is to set ``MaxRequestsPerChild 1`` in your -httpd.conf to force Apache to reload everything for each request. But don't do -that on a production server, or we'll revoke your Django privileges. +Restart your development Web server, and reload the Django admin page. You'll +have to restart the server each time you make a change to Python code -- but +we're working on changing that. Explore the free admin functionality ====================================