一、建立目录问题

建议在集成开发环境下新建目录,注意不是文件! 

在Pycharm环境下新建 一个Python Package (推荐)

二、建立虚拟环境

 方法一(不推荐):假设新建的Package名字叫:'xiangmu',则在该目录下运行终端:

xiangmu$ python -m venv xm_env  # 运行了venv模板来创建一个名为xm_env的虚拟环境

 方法二(推荐):如果系统没有正确的设置,不能使用venv,则在终端运行如下命令安装virtualenv包

方法一:

$ pip install --user virtualenv  # pip安装virtualenv

方法二
$ sudo apt-get install python-virtualenv # Ubuntu系统安装virtualenv

(重要)再终端切换到目录‘xiangmu ’,执行如下命令 

xiangmu$ virtualenv xm_env --python=python3  # 一定要指明是python3 不然默认为python2

三、基本命令

1.激活虚拟环境并安装Django

xiangmu$ source xm_env/bin/activate  # 激活虚拟环境

#执行结果如下
(xm_env)xiangmu$

(xm_env)xiangmu$ deactivate  # 停止使用虚拟环境

(xm_env)xiangmu$ pip install Django # pip安装Django

2.在Django中创建项目 

(xm_env)xiangmu$ django-admin.py startproject xiangmu . # 最后句点一定要不要漏了 
(xm_env)xiangmu$ ls   # 新建一个manage.py文件  
xiangmu xm_env manage.py
(xm_env)xiangmu$ ls xiangmu
__init__.py settings.py urls.py wsgi.py  # wsgi是Web服务器网管接口的首字母缩写

3.创建数据库以及迁移数据库 

 

#首次执行migrate, Django确保数据库与项目当前状态匹配,并新建一个数据库(SQLlite首次执行)
(xm_env)xiangmu$ python manage.py migrate  
 --snip--
(xm_env)xiangmu$ ls
db.sqlite3 xiangmu xm_env manage.py    # SQLli是一种使用单个文件的数据库,适合简单应用程序


#迁移数据库

(xm_env)xiangmu$ python manage.py makemigrations app_name

4.启动的服务器 

(xm_env)xiangmu$ python manage.py runserver

Performing system check...

--snip--

Quit the server with CONTROL-C.    # 表示服务器启动成功

 url查看:http://127.0.0.1:8000/

 5.创建应用程序

 

(xm_env)xiangmu$ python manage.py startapp app_name  # 创建一个基础设施 app_name 为app的名字
(xm_env)xiangmu$ ls  # 新增一个app_name文件夹
db.sqlite3 xiangmu app_name xm_env manage.py
(xm_env)ls app_name/
admin.py __init__.py migrations models.py tests.py views.py  # 几个主要的模板

6.超级用户的创建 

(xm_env)xiangmu$ python manage.py createsuperuser

Username (leave blank to use 'ehmatthes'):   # 用户名
Email address:             # 可不填    
Password:                  # 通行证
Password(again):           # 再次输入通行证

Superuser created successful.  # 代表创建成功

 小知识:Django并不存储你输入的密码, 而存储从该密码派生出来的一个字符串——散列值。每当你输入密码时, Django都计算其散列值, 并将结果与存储的散列值进行比较。 如果两个散列值相同, 就通过了身份验证,通过存储散列值, 即便黑客获得了网站数据库的访问权, 也只能获取其中存储的散列值, 而无法获得密码。在网站配置正确的情况下, 几乎无法根据散列值推导出原始密码。