Django项目总结:虚拟环境和基本流程

【创建虚拟环境】

-- 安装

  -- sudo pip install virtualenv # 虚拟环境的安装

  -- sudo pip install virtualenvwrapper # 安装虚拟环境的扩展包

-- 编辑家目录下面的 .bashrc 文件,末尾添加

  -- gedit .bashrc  # 家目录下执行

  -- export WORKON_HOME=$HOME/virtualenvs  #末尾添加这两行

    source /usr/local/bin/.vitualenvwrapper.sh

  -- source .bashrc  # 执行一下

 

命令:mkvirtualenv 名字 -p /usr/bin/python3 # 配置环境

  • 退出虚拟环境  deactivate
  • 进入虚拟环境  workon 虚拟环境名称
  • 删除虚拟环境  rmvitualenv 虚拟环境名称

进入环境后:pip freeze #显示环境中的应用

安装Django:pip install django==1.11.7

pip list #显示环境中所有的包和版本

 

【创建Django项目】

django-admin startproject HelloDjango #创建一个工程 HelloDjango

wsgi.py:web网关服务接口

为项目创建应用:python manage.py startapp App #名为App

启动服务:python manage.py runserver

runserver:内置的开发者服务器

红字报错:有文件没有进行迁移

pycharm打开django工程:打开manage.py的上一级目录

配置项目的环境:setting -> project int -> + Vir En -> Exist 

【测试环境 => 演示环境 => 生产环境】

 

【文件内容setting.py:】

  •   项目所在的目录
  •   密钥,生产环境:已上线,线上环境
  •   调试开关,不要在生产环境中打开
  •   允许主机,所有人都能访问 ["*"]
  •   内置app
  •   中间件
  •   跟路由
  •   模板
  •   调用WSGI应用,部署时使用?
  •   数据库,SQLIte,轻量级嵌入式数据库,Android,IOS,WP手机中
  •   验证,密码验证器
  •   语言编码,中文 ''zh-hans"
  •   统一协调时间,中国 "Asia/shanghai"

 

【数据库迁移】

 

 

 

执行迁移:python manage.py migrate

 

 

【路由文件urls.py:】

 

【视图函数views.py】

 

 

【Templates 模板配置】

第一种在应用中写T

 

 

显示T中index网页

加个路由

 

render()直接渲染

"index.html" 输入不智能提示,设置

 

settings中注册应用

访问(ip+端口):http://192.168.124.128:8000/index/

 

第二种模板T使用(开发中使用该方法,模板可以继承,复用)

templates创建在工程目录下,并在其中创建home.html

 

 

 

 

【拒绝上帝文件/类(什么都能做,文件多)】

-- 项目如果逻辑过于复杂,可以进行拆分

-- 拆分为多个App

-- 然后继续拆分路由器 urls

  -- 在App(即Two)中创建自己的urls

    -- urlpatterns 路由规则列表

    -- 在根 urls 中进行子路由的包含

  -- 子路由使用

    -- 根路由规则 + 子路由规则

    -- r'two/' + r'^index/' => http://192.168.124.128:8000/two/index/

python manage.py startapp Two #创建一类似App应用

创建的东西使用前需注册

 

 

【分发路由:Two中创建urls.py】

 

 

将Two中的路由告诉项目中的根路由

 

访问:http://192.168.124.128:8000/two/index/

 

【models 使用了ORM技术(Object Rekational Mapping 对象关系映射)】

-- 将业务逻辑和SQL进行了解耦合

  -- 直接对数据库进行操作,不需要用数据库语言,相当于翻译

  -- object.save()

  -- object.delete()

-- 关系型数据库

  -- 先定义数据库 DDL

  -- django 中通过 models 定义实现 数据库表的定义

从模型models => 变成数据库 Student表

然后进行迁移

python manage.py makemigrations #1.生成迁移文件

 

python manage.py migrate #2.执行迁移

 

直接插入数据

 

代码插入数据

urls

 

views

开启服务:python manage.py runserver 9000#运行在本机地址的9000端口

浏览器:ip:9000/two/addstudent/

 

显示插入的学生

ORM抽象出来的操作入口

将学生数据拿出来

 

浏览器:ip:9000/two/getstudents/

 

将数据显示在网页上

 

 

 

 

快捷键:

-- control + p 参数提示

-- shift + f6 重命名,重构,引用该名处同时修改

 

传值,映射模板,对应

模板语法

 

 

 

更新学生信息

url(r'^updatestudent/', views.update_student),

【更新删除基于查询】

 

删除学生信息

url(r'^deletestudent/', views.delete_student),

 

-- 数据操作

  -- 增删改查

  -- 存储

    -- save()

  -- 查询

    -- 查所有 objects.all()

    -- 查单个 objes.get(pk=xx) #主键存在=>更新,不存在=>创建

  -- 更新

    -- 基于查询的

    -- 查询的对象,修改属性,然后save()

  -- 删除

    -- 基于查询的

    -- 调用 delete()

 

DataBase模块,可以直接连接操作数据库Sqlite和MySQL

三种MySQL连接驱动:

-- 连接mysql驱动

  -- python2,3都能直接使用

  -- 缺点:对mysql安装有要求,必须指定位置存在配置文件

-- python-mysql

  -- python2 支持

  -- python3 不支持

-- pymysql

  -- python2,python3都支持

  -- 它还可以伪装成前面的两个库

  -- 安装:pi

  -- 伪装

 

【换MySQL数据库】

 

连接MySQL,创库GP1HelloDjango

mysql -u root -p 111111

mysql> create database GP1HelloDjango charset=utf8;

退出数据库

 

 

执行迁移:python manage.py migrate

报错:数据库驱动错误

操作:安装驱动pymysql =》进行伪装

报错:1049, "Unknown database

操作:检查各个环节数据库命名,MySQL初建时,settings.py,pycharm添加

 

【在views中加载渲染模板原理】

将 模板语言 转化为 HTML语言

python manage.py startapp Three

注册到系统的setting中

 

Three =》urls =》添加到根路由 =》创建Three的模板文件夹和模板

=》模板经历过程(加载loader =》渲染render)

 

【SHELL】

用shell进行调试

-- django shell

  -- 集成python环境的shell终端

  -- 通常在终端中做一些调试工作

 

-- 如何看待bug

  -- 看日志

    -- 先看第一条,再看最后一条

  -- 梳理思路

    -- 程序在哪个位置和预期出现偏差

 

表关系

-- 1:1

  -- 外键添加唯一约束,使之一对一

-- 1:M

  -- 外键可以多个,通常做多对一

-- M:N

  -- 产生额外一张关系表,在其中关联两张表的主键

 

数据集连

 

迁移,映射到库中,生成迁移文件,执行迁移

 

在班级和学生表中添加信息

1.获取学生的班级

views.py

 

2.找到班级的所有学生

显示在网页

 

posted @ 2019-07-10 22:52  颗粒成仓  阅读(317)  评论(0编辑  收藏  举报