第一个Django项目将是一个完整的博客网站。它和我们博客园使用的博客别无二致,一样有分类、标签、归档、查询等功能。如果你对Django感兴趣的话,这是一个绝好的机会。该教程将和你一起,从零开始,搭建一个属于你自己的Django博客站点。
事不宜迟,让我赶快开始吧!
创建你的第一个Django项目
Django提供了一个命令,可以让你轻松地创建初始Django项目文件结构。从你的终端运行以下命令:
django-admin startproject mysite
这将会创建一个名为mysite的Django项目。
让我们看看Django项目的结构:
|- mysite/
|- manage.py
|- mysite/
|- __init__.py
|- settings.py
|- urls.py
|- wsgi.py
生成的settings.py文件默认情况下包括SQLite数据库设置与Django app列表,我们需要在数据库中创建初始应用程序的表。
打开终端并运行下面的命令:
cd mysite
python manage.py migrate
你可以看到以下输出:
Rendering model states... DONE
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying sessions.0001_initial... OK
至此,初始Django app的表已经创建完毕。
运行开发者服务器
Django会用自带的轻量级Web服务器来运行你的代码,不需要花费大量的时间配置生产服务器。当你运行Django开发服务器,它会检查代码中的变化,自动重新加载。把你从手动重启服务器的繁琐过程中解放出来。然而,它可能不会注意到一些操作,比如向项目添加新的文件,在这些情况下,你将不得不手动重新启动服务器。
从项目的根目录中输入以下命令:
python manage.py runserver
你可以看到以下输出:
Performing system checks...
System check identified no issues (0 silenced).
November 5, 2015 - 19:10:54
Django version 1.8.6, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
现在,打开浏览器输入HTTP://127.0.0.1:8000/。看到这个页面就说明运行成功,如图所示:
你也可以自定义Django开发服务器主机和端口,或者告诉它你想加载不同的设置文件。例如,您可以运行manage.py命令如下:
python manage.py runserver 127.0.0.1:8001 \ -- settings=mysite.settings
这是方便处理多个环境,需要不同设置的情况。请记住,此服务器只用于开发,不适合用于生产使用。为了部署Django的生产环境,你应该使用一个真正的Web服务器,如Apache,gunicorn应用,或uWSGI。让其作为一个网络服务器的网关接口运行它(WSGI)
项目设置
让我们打开settings.py文件,看一看我们的项目配置。
其中Django常用设置包含在这个文件当中,但这些只是Django设置的一部分。所有设置可以在此看到:https://docs.djangoproject.com/en/1.8/ref/settings/.
DEBUG:一个布尔值,该布尔函数用以打开项目的调试模式。如果设置为true,Django会显示详细的错误页面。当你移动到一个生产环境,记得必须设置它为False。不要将网站以调试模式部署到生产中,这样会暴露你的项目的敏感数据。
ALLOWED_HOSTS:在调试模式或正在运行测试时,这个选项不起作用。一旦你关闭调试模式,并将你的网站布置在正式的生产环境,就必须在settings.py中添加部署环境的域名/主机,以便允许服务器运行Django站点。
- INSTALLED_APPS :这个设置告诉Django哪些app是启用的。默认情况下,Django包含下面application:
- django.contrib.admin: Django管理站点.
- django.contrib.auth: Django认证模块.
- django.contrib.contenttypes: Django内容类型框架.
- django.contrib.sessions: Django会话框架.
- django.contrib.messages: Django消息传递框架.
- django.contrib.staticfiles: Django管理静态文件的框架.
MIDDLEWARE_CLASSES :一个元组,包含需要执行的中间件。
DATABASES:是一个用于在项目中使用的,包含所有数据库的字典。默认的配置使用sqlite3数据库。
LANGUAGE_CODE:为Django项目定义默认的使用语言。
如果你对Django的设置还不是十分了解,不要担心。在接下来的学习中,你更加了解Django的相关设置。
项目(project)与应用(application)
在本书中,你可能会经常看到项目(project)和应用(application)这两个Django术语。项目通常是指由你生成的Django站点程序以及与站点相关的设置。而应用通常是指包含模块(models.py)、视图(views.py)、模板(template)和链接(url.py)的一个Python模块。应用和框