一、Django简介和安装
安装版本与步骤见下面官网
官网 https://www.djangoproject.com/download/
版本选择:
1.3 上古版本
1.8 三五年前项目
1.11 第一代版本的最后一个中版本,最后一个支持python2的版本
2.0以后 更完善的功能, 仅支持python3
(LTS)long-term support 长期维护版,公司开发选用 更稳定
本项目用2.2.3版本
安装
pip install Django 此安装默认安装最新版本
pip install Django==2.2.3 安装特定版本
二、如何创建工程
安装好之后开始创建工程。建议一个项目创建一个单独的目录。
创建
安装django后会一并安装django-admin.exe的命令工具.
1.打开cmd或power shell或pycharm的Terminal , cd到放项目的目录下
2.输入命令 : django-admin startproject [project name]
运行测试服务器
测试服务器性能低, 不负责高并发, 仅供单人开发访问用。
cd到项目文件夹下 python manage.py runserver
与平时python xxx.py
不同,manage.py
被第三方工具封装成了CLI命令行工具, 后面runserver是一个参数。
自定义访问者ip和开放端口python manage.py runserver 0.0.0.0:8000
基本项目结构介绍:
manage.py 命令行工具. 负责运行,创建子模块等功能,跟django-admin.
mysite 跟项目同名的子包
mysite/setting 工程项目设置文件. 数据库,时区,语言等. 方便其他地方调用.
mysite/urls.py url路由, 指向不同的视图函数.
mysite/wsgi 通用网关接口.部署时用到.
三、如何创建app
命令代码python manage.py startapp [appname]
project VS apps
django 项目里的app并不是我们平时所说的应用, 一个项目,一个应用在project,django框架中的app是一个更小级别的划分,代表一个大模块.
比如大型项目教育网站,权限,学生,教室,后台,每个大模块下有几十个页面功能.都写在一起脚本太大不好维护,所以django小项目可以写一个模块,大项目可以按照逻辑分为多个app(子应用)
app中的目录:
app/migrations数据库迁移桥本
admin.py 自带的后台配置文件, 快捷实现表CRUD
models.py 定义数据库表结构
tests.py 单元
views.py 视图, 功能逻辑, 渲染页面
四、配置settings.py
配置settings-DATABASES详见: http://d.u753.com/ref/settings.html#std:setting-NAME
mysql连用户名,密码,项目大型后会有很多配置, 如果写在每一个py脚本中将会产生重复代码, 解决方案是在py.json配置我呢见声明键值对变量, 其他各个py脚本配置变量习惯上全大写字母命名。
数据库配置
默认sqlite,其他mysql, PostgreSQL
sqlite
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
mysql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
# 'NAME': 'my_mysql_instance',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {
# 'read_default_file': '/path/to/my.cnf',
},
}
PostgreSQL
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'mydatabaseuser',
'PASSWORD': 'mypassword',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
五、生成表结构
1.module.py 用类的方式定义表结构
2.想要使用和生成表结构的app需要先加入到settings中的installed_apps
INSTALLED_APPS = [
# 框架自带应用,管理后台,权限,会话,静态文件等
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles', # 找不到 'staticfiles polls'包,少写逗号.
# 自定义应用
'polls.apps.PollsConfig', # 或'polls' ?增加的一行,自定义创建的应用
]
3.生成sql python manage.py makemigrations [app_name]
,生成的迁移脚本在migrations文件夹下.
以上写完后创建数据库, 地址选中该目录下执行python manage.py runserver
之后出现的db.sqlite3
4.执行sql python manage.py migrate
5.成功后会在数据库中看到生成的表.