1.版本选择
在这里我们选择了Django1.11.x的版本
Django 1.11.x 支持 Python 2.7, 3.4, 3.5 和 3.6,17年4月4号 已经发布(长期支持版本 LTS)
一般来说,选择长期支持版本比较好。
如果是正式启动的新项目,建议用 Django 1.11.x,毕竟 Django 1.9 以后 admin 界面更漂亮些。
课程主要以Ubuntu系统为主
并先安装pip
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-pip
利用 pip 安装 Django
因为Django是国外开源的资源,在我们天国内下载Django会很慢,这时我们还有办法及解决
Linux下,修改 ~/.pip/pip.conf (没有就创建一个),按下Ctrl + H 可以看到隐藏文件,修改 index-url至tuna,内容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
也就是在home目录下,Ctrl+H显示隐藏文件,如果没有.pip
这个文件就创建一个,再在.pip
文件下创建pip.conf
文件,将上面代码写入文件中。
然后开始安装Django
(sudo) pip install Django
或者 (sudo) pip install Django==1.8.16
或者 pip install Django==1.11
检查是否安装成功
终端上输入 python ,点击 Enter,进行 python 环境
>>> import django
>>> django.VERSION
(1, 11,0, 'final', 0)
>>>
>>> django.get_version()
'1.11.0'
Django基本命令
新建一个 django project
django-admin.py startproject project_name
//特别是在 windows 上,如果报错,尝试用 django-admin 代替 django-admin.py 试试
注意 project_name 是自己的项目名称,需要为合法的 Python 包名,如不能为 1a 或 a-b。
新建 app
要先进入项目目录下,cd project_name 然后执行下面的命令(下同,已经在项目目录下则不需要 cd project_name)
python manage.py startapp app_name
或 django-admin.py startapp app_name
一般一个项目有多个app, 当然通用的app也可以在多个项目中使用。
与项目名类似 app name 也需要为合法的 Python 包名,如 blog,news, aboutus 等都是合法的 app 名称。
创建数据库表 或 更改数据库表或字段
Django 1.7.1及以上 用以下命令
# 1. 创建更改的文件
python manage.py makemigrations
# 2. 将生成的py文件应用到数据库
python manage.py migrate
旧版本的Django 1.6及以下用
python manage.py syncdb
这种方法可以在SQL等数据库中创建与models.py代码对应的表,不需要自己手动执行SQL。
备注:对已有的 models 进行修改,Django 1.7之前的版本的Django都是无法自动更改表结构的,不过有第三方工具 south
使用开发服务器
开发服务器,即开发时使用,一般修改代码后会自动重启,方便调试和开发,但是由于性能问题,建议只用来测试,不要用在生产环境。
python manage.py runserver
# 当提示端口被占用的时候,可以用其它端口:
python manage.py runserver 8001
python manage.py runserver 9999
(当然也可以kill掉占用端口的进程,具体后面有讲,此处想知道的同学可查下 lsof 命令用法)
# 监听机器所有可用 ip (电脑可能有多个内网ip或多个外网ip)
python manage.py runserver 0.0.0.0:8000
# 如果是外网或者局域网电脑上可以用其它电脑查看开发服务器
# 访问对应的 ip加端口,比如 http://172.16.20.2:8000
清空数据库
python manage.py flush
此命令会询问是 yes 还是 no, 选择 yes 会把数据全部清空掉,只留下空表。
创建超级管理员
python manage.py createsuperuser
# 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填
# 修改 用户密码可以用:
python manage.py changepassword username
Django 项目环境终端
python manage.py shell
Django视图与网址
Django中网址是写在 urls.py 文件中,用正则表达式对应 views.py 中的一个函数(或者generic类),我们用一个项目来演示。
首先,新建一个项目(project), 名称为 mysite
django-admin startproject mysite
备注:
1.如果 django-admin 不行,请用django-admin.py
运行后,如果成功的话, 我们会看到如下的目录样式
mysite
├── manage.py
└── mysite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
我们会发现执行命令后,新建了一个 mysite 目录,其中还有一个 mysite 目录,这个子目录 mysite 中是一些项目的设置settings.py
文件,总的urls配置文件urls.py
以及部署服务器时用到的wsgi.py
文件,__init__.py
是python包的目录结构必须的,与调用有关。
我们到外层那个 mysite 目录下(不是mysite中的mysite目录)
新建一个应用(app), 名称叫 learn
python manage.py startapp learn # learn 是一个app的名称
我们可以看到mysite中多个一个 learn 文件夹,其中有以下文件。
learn/
├── __init__.py
├── admin.py
├── models.py
├── tests.py
└── views.py
注:Django 1.8.x 以上的,还有一个 migrations 文件夹。Django 1.9.x 还会在 Django 1.8 的基础上多出一个 apps.py 文件。
把我们新定义的app加到settings.py中的INSTALL_APPS中
修改 mysite/mysite/settings.py
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'learn',
)
这一步是干什么呢? 新建的 app 如果不加到 INSTALL_APPS 中的话, django 就不能自动找到app中的模板文件(app-name/templates/下的文件)和静态文件(app-name/static/中的文件) , 后面你会学习到它们分别用来干什么.