创建你的第一个项目

本人属于野路子出身,IT方面全靠自学,技术一般,但心里却一直有一个开源梦,想自己独立开发一个项目然后放到github上。想了很久最终决定做一个运维平台,因为现在工作方向还是偏运维,对这块会熟悉一点。对于运维平台的话,总体的需求一般就是以下个方面监控告警、资产管理、自动化部署上线、配置管理等。如果想做的非常棒,以上每个需求都可以单独拿出来做一个项目的。

创建第一个项目

在命令行中,cd到你想保存项目的目录,然后执行以下命令:

E:\opgit>C:\Python35\Scripts\django-admin.exe startproject mixcloud

E:\opgit>dir E:\opgit\mixcloud

2017/03/05  12:41    <DIR>          .
2017/03/05  12:41    <DIR>          ..
2017/03/05  12:41               806 manage.py
2017/03/05  12:41    <DIR>          mixcloud

E:\opgit>dir E:\opgit\mixcloud\mixcloud
2017/03/05  12:41    <DIR>          .
2017/03/05  12:41    <DIR>          ..
2017/03/05  12:41             3,102 settings.py
2017/03/05  12:41               765 urls.py
2017/03/05  12:41               394 wsgi.py
2017/03/05  12:41                 0 __init__.py
               4 个文件          4,261 字节
               2 个目录 100,502,478,848 可用字节

windows的dos命令行,没有linux命令行看的舒服。但是为了能用pycharm开发,只能将就一下。
执行完后,将会在当前目录生成一个mixcloud目录。目录结构如下:

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

简单描述这些目录和文件:

  • 外层的mixcloud/根目录仅仅是项目的一个容器。它的命名对Django无关紧要;你可以把它重新命名为任何你喜欢的名字。
  • manage.py:一个命令行工具,可以使你用多种方式对Django项目进行交互。输入python manage.py help,可查看帮助,除了常规的查看版本外,还支持特别多的子命令,每个子命令又可通过python manage.py help <subcommand>,子命令里用的比较多的一般是shell、runserver、sqlall、syncdb、createsuperuser、collectstatic,其他的用的不多。
E:\opgit\mixcloud>python manage.py help
Usage: manage.py subcommand [options] [args]

Options:
  -v VERBOSITY, --verbosity=VERBOSITY
                        Verbosity level; 0=minimal output, 1=normal output,
                        2=verbose output, 3=very verbose output
  --settings=SETTINGS   The Python path to a settings module, e.g.
                        "myproject.settings.main". If this isn't provided, the
                        DJANGO_SETTINGS_MODULE environment variable will be
                        used.
  --pythonpath=PYTHONPATH
                        A directory to add to the Python path, e.g.
                        "/home/djangoprojects/myproject".
  --traceback           Print traceback on exception
  --version             show program's version number and exit
  -h, --help            show this help message and exit

Type 'manage.py help <subcommand>' for help on a specific subcommand.

Available subcommands:

[auth]
    changepassword
    createsuperuser

[django]
    check
    dbshell
    shell
    sql
    sqlall
    startapp
    startproject
    syncdb
    ...
[sessions]
    clearsessions

[staticfiles]
    collectstatic
    findstatic
    runserver
  • 内层的mysite/目录,是你的项目的真正的Python包。
    它是你导入任何东西时将需要使用的Python包的名字(例如mysite.urls
    )。

  • mysite/init.py:一个空文件,它告诉Python这个目录应该被看做一个Python包。

  • mysite/settings.py:该Django 项目的设置/配置文件。Django 设置 将告诉你这些设置如何工作。

  • mysite/urls.py:该Django项目的URL声明;可看作是Django站点的“目录”。

  • mysite/wsgi.py:用于你的项目的与WSGI兼容的Web服务器入口。

初始化配置

项目创建好,还需要对项目进行一些初始化的配置。比如数据库、时区等
设置数据库

数据库配置放在mixcloud/settings.py,它是一个用模块级别变量表示 Django 配置的普通 Python 模块。
默认情况下,数据库配置使用的是SQLite,一个轻便的文件类型数据库,如果你只是简单学习,想快速将django项目跑起来,SQLite是最好的选择。默认配置如下

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

这里我用mysql作为该项目的数据库。编辑mixcloud/settings.py文件,修改如下DATABASES配置

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql', 
            'HOST': 'localhost',  # 数据库所在服务器
            'NAME': 'mixcloud',  # 数据库名
            'USER': 'root',   # 连接数据库的用户
            'PASSWORD': '',   # 密码
        },
    }

配置好后,就可以创建数据库了。

E:\opgit\mixcloud>mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 426
Server version: 5.6.34 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database mixcloud default character set utf8;
Query OK, 1 row affected (0.08 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cmdb               |
| mixcloud           |
| mysql              |
| ossdb              |
| performance_schema |
| test               |
+--------------------+
7 rows in set (0.05 sec)

mysql>

设置时区

django默认的时区是UTC,如果不设置,显示的时间会与中国实际的时间相差8小时。编辑mixcloud/settings.py
时,为中国的时区TIME_ZONE = 'Asia/Shanghai'

配置APP

默认情况下,INSTALLED_APPS
会包含以下应用,这些应用是django自带的,开发人员可以直接使用,也可以将其打包分发到其他项目中使用。

  • django.contrib.admin: 管理站点。一个功能丰富的后台管理系统

  • django.contrib.auth:认证系统。方便的用户管理和权限管理

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

  • django.contrib.sessions:会话框架。用于session管理

  • django.contrib.messages:消息框架。用于用户进行操作页面后的提示信息

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

对于崇尚大道至简的开发者,如果不需要其中任何一个或所有应用,可以在syncdb之前,将对应的app注释即可。

生成apps所需要的表

syncdb命令将查看INSTALLED_APPS设置并根据settings.py文件的数据库设置,创建任何必要的数据库表。运行以下命令:

python manage.py syncdb

E:\opgit\mixcloud>python manage.py syncdb
Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table django_content_type
Creating table django_session

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'max352'): Michaelzeng
E-mail address: 1036181341@qq.com
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

第一次创建表使用的是syncdb命令,以后如果表结构有变或新增app,则是用migrage命令操作。
从输出可以看到创建了很多表,以及创建了一个superuser。我们可登录数据库后台,查看新建的表。

运行开发服务器

django开发服务器是可用在开发期间的,一个内建的,轻量的web服务。这样我们就可以在开发过程中快速的启动服务,并进行调试。

进入外层mixcloud目录,运行命令

E:\opgit\mixcloud>python35 manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
March 05, 2017 - 19:41:49
Django version 1.10.2, using settings 'mixcloud.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

我们访问http://127.0.0.1:8000/ ,如果可以看到django自带的欢迎界面,表示已经可以正常工作了

Paste_Image.png

虽然django自带的web服务,非常方便,但是在生产环境中,不建议使用,在同一时间,该服务器只能可靠地处理一次单个请求,并且没有进行任何类型的安全审计。默认情况下,runserver 命令在 8000 端口启动开发服务器,且仅监听本地连接。 要想要更改服务器端口的话,可将端口作为命令行参数传入:

python35 manage.py runserver 8080

但是以上方式启动的web服务,仅能本地访问。如果你想和其他开发人员共享同一开发站点的话,该功能特别有用。 0.0.0.0 这个 IP 地址,告诉服务器去侦听任意的网络接口。

python35 manage.py runserver 0.0.0.0:8080

这样,你本地网络中的其它计算机就可以在浏览器中通过 IP 地址:端口来访问web服务了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 230,622评论 6 544
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,716评论 3 429
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 178,746评论 0 383
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,991评论 1 318
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,706评论 6 413
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 56,036评论 1 329
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 44,029评论 3 450
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 43,203评论 0 290
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,725评论 1 336
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,451评论 3 361
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,677评论 1 374
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 39,161评论 5 365
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,857评论 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,266评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,606评论 1 295
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,407评论 3 400
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,643评论 2 380

推荐阅读更多精彩内容