django创建一个项目

来源:互联网 发布:最新全国省市区数据库 编辑:程序博客网 时间:2024/06/05 19:39

0x00前言

在命令行(终端)中,cd(例如cdC:\Python35)到你想要用来保存代码的目录,然后运行如下命令:

C:\Python35
$ django-admin startproject scandere

这将会在你的当前目录下生成一个 scandere 目录。如果它不能正常工作,请查看运行django-admin遇到的问题。
注意:你给项目命名时要避免与Python或Django的内建组件同名。 特别地,你应该避免使用类似django(与Django自身冲突)或 test(与Python内建的包冲突)这样的名称。将你的代码放置在Web服务器根目录以外的地方,例如/home/rainmap-lite

0x01 基本结构

让我们看一下startproject生成了什么:scandere

scandere/
    manage.py
    scandere/
        __init__.py
        settings.py
        urls.py
        wsgi.py

  • 外层的scandere/根目录仅仅是项目的一个容器。它的命名对Django无关紧要;可以重命名,例如这里我重命名为rainmap-lite,即是rainmap-lite/ scandere/
  • manage.py:一个命令行工具,可以使你用多种方式对Django项目进行交互。 你可以在django-admin和manage.py中读到关于manage.py的所有细节。
  • 内层的scandere/目录是你的项目的真正的Python包。它是你导入任何东西时将需要使用的Python包的名字(例如scandere.urls)。
  • scandere/__init__.py:一个空文件,它告诉Python这个目录应该被看做一个Python包。 (如果你是一个Python初学者,关于包的更多内容请阅读Python的官方文档)。
  • scandere/settings.py:该Django 项目的设置/配置。Django 设置 将告诉你这些设置如何工作。
  • scandere/urls.py:该Django项目的URL声明;你的Django站点的“目录”。 你可以在URL 路由器 中阅读到关于URL的更多内容。
  • scandere/wsgi.py:用于你的项目的与WSGI兼容的Web服务器入口。 更多细节请参见如何利用WSGI进行部署。

0x02 数据库的建立

现在,编辑scandere/settings.py它是一个普通的Python模块,带有模块级别的变量,用来表示Django的配置。

默认情况下,该配置使用SQLite。如果你是数据库初学者,或者你只是想要试用一下Django,它是最简单的选择。 SQLite包含在Python中,所以你不需要另外安装其他任何东西来支持你的数据库。 然而,当你开始第一个真正的项目时,你可能想使用一个更健壮的数据库比如PostgreSQL来避免在未来遇到令人头疼的数据库切换问题。

请参见DATABASES的参考文档。【http://python.usyiyi.cn/documents/django_182/ref/settings.html#std:setting-DATABASES】如果你使用SQLite,你不需要事先创建任何东西 —— 数据库文件将会在需要的时候自动创建。

当你编辑scandere/settings.py时,请设置TIME_ZONE为你自己的时区。找到以下内容

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
把以上内容修改成以下内容:

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

另外,请注意文件顶端的INSTALLED_APPS设置。它保存这个Django实例中激活的所有的Django应用的名字。 应用可以在多个项目中使用,而且你可以将这些应用打包和分发给其他人在他们的项目中使用。

默认情况下,INSTALLED_APPS包含下面的应用,它们都是Django 与生俱来的:

django.contrib.admin —— 管理站点。你将在本教程的第2部分使用到它。

django.contrib.auth —— 认证系统。

django.contrib.contenttypes —— 用于内容类型的框架。

django.contrib.sessions —— 会话框架。

django.contrib.messages —— 消息框架。

django.contrib.staticfiles —— 管理静态文件的框架。

这些应用,默认包含在Django中,以方便通用场合下使用。
然而上面的部分应用至少需要使用一个数据库表,因此我们需要在使用它们之前先在数据库中创建相应的表。要做到这一点,请运行以下命令:

C:\Python35\rainmap-lite
$ python manage.py migrate

        migrate查看INSTALLED_APPS设置并根据mysite/settings.py文件中的数据库设置创建任何必要的数据库表,数据库的迁移还会跟踪应用的变化(我们稍后会讲到)。你会看到对每次迁移有一条信息。如果你有兴趣,可以运行你的数据库的命令行客户端并输入dt (PostgreSQL), SHOW TABLES; (MySQL)或.schema (SQLite)来显示Django创建的表。
     就像我们上面说到的,以上包含的默认应用用于常见的场景,但并不是每个人都需要它们。 如果你不需要它们中的任何一个或所有应用,可以在运行migrate之前从INSTALLED_APPS中自由地注释或删除相应的行。migrate 命令将只为INSTALLED_APPS中的应用运行数据库的迁移。

0x03 开发服务器

让我们验证一下你的Django项目是否工作。 如果你在外层的C:\Python35目录下,那么进入这个目录,然后运行以下命令:
C:\Python35\rainmap-lite
$python manage.py runserver
你将看到命令行下输出了以下内容:

Performing system checks...
System check identified no issues (0 silenced).
August 26, 2016 - 23:53:12
Django version 1.9.7, using settings 'scandere.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
更改端口:
C:\Python35\rainmap-lite
$python manage.py runserver 8080
如果你需改变服务器的IP地址,把IP地址和端口号放到一起。 因此若要监听所有的外网IP,请使用(如果你想在另外一台电脑上展示你的工作,会非常有用):
C:\Python35\rainmap-lite
$ python manage.py runserver 0.0.0.0:8000
开发服务器的所有文档可以在runserver的参考手册中找到。
runserver的自动重载
开发服务器会根据需要自动重新载入Python代码。 你不必为了使更改的代码生效而重启服务器。 然而,一些行为比如添加文件,不会触发服务器的重启,所以在这种情况下你需要手动重启服务器。


欢迎大家分享更好的思路,热切期待^^_^^ !

0 0