• 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.找到班级的所有学生

    显示在网页

    从现在开始,种下梦想中的参天大树
  • 相关阅读:
    定时器中断彩灯控制程序
    单片机C51 8位流水灯
    十进制转换2-9进制转换
    加减乘除+菜单实现
    文件 I/O缓冲流
    文件 I/O字符流
    spring配置c3p0连接池
    javax.swing.Timer的与Lambda的使用
    代码简化之道--接口之从传统实现到Lambda表达式实现
    Java核心技术第六章--内部类
  • 原文地址:https://www.cnblogs.com/dc2019/p/13281516.html
Copyright © 2020-2023  润新知