1,django项目的各个文件的介绍

1.1>项目的根目录:是各个子文件的根目录,在各个文件相互导入文件的时候使用

1.2>配置文件:为django的各个文件配置相关的各种默认配置

1.3>路径和函数的对应关系:是当form表单提交数据的时候和有关于网址的东西都会来urls来查找向对应的东西

1.4> 项目的静态文件:用于存放于静态的比如:css,js,bootstrap,jQuery,img文件等

1.5>templates:存放HTML文件的地方

1.6>manager:是命令行入口文件

1.7>db.aqlite3:django开发环境默认的文件数据库

2,浏览器和django服务器请求,响应的过程

第一步先向服务器get login的页面这次是请求,(method=get)

第二步,当访问服务器的时候,服务器获取到login/(通过request)去urls去寻找login函数

在第三步,django会帮助login自动执行login函数,并传一个request的参数,这个request是django封装了所有和浏览器请求有关的所有的键值对

第四步执行login函数的以后,要返回login的html文件,在这里render是返回文件的专属

在第四步return返回给调用者,(其实是返回给了request)此时,request里有html文件的路径,然后浏览器去渲染这个html文件

3,form表单提交数据的三要素:

  3.1>form标签必须标签必须要有action和method属性(action是向那提交数据,method是以什么样的方式提交数据(post,get))

   3.2>所有获取用户输入的标签必须放在form表单中,必须要有name属性(name=值的键值对 )

    3.3>必须要有submit按钮(提交)

4,django基础必会三件套

  from django.shortcuts import  HttpResponse,render,redirect

  4.1>HttpResponse:返回一个指定的字符串

  4.2>render:返回一个html文件

  4.3>redirect:跳转

5,request相关的属性

  5.1>request.method  --->返回的是请求的方法(全大写):GET/POST...

  5.2>request.GET      --->取得的是URL里面的参数,类似于字典的节后数据

  5.3>request.POST   --->post提交的数据,类似于字典的数据结构

6,Django的模板数据语言:{{变量名}}

7,程序连接pymysql

  7.1>导入偏移MySQL模块

  7.2>创建连接

  7.3>获取执行命令的油表

  7.4>用油表去执行sql语句

  7.5>获取sql语句查询的结果

  7.6>关闭油表

  7.7>关闭连接

7.8>在django中有一种工具帮助翻译sql语句  -->ORM(Object Relationship Model)

优点:1>开发效率高

  2>开发并不用直接写sql语句

缺点:执行效率低

从面向对象的角度去看数据库中的表,一张表就是一个类,表中的每一个字段就是一个类中的属性,每一行就是类实例化的一个对象

8,django项目中的APP --->项目中又分了一级python包,不同的功能房到不同的包里面

  8.1>创建app-->python manage.py startapp app01

  8.2>告诉Django创建一个APP

    在setting.py找到那个INSTALLED_APPS中添加创建的app

9,Django中ORM的使用

  9.1>操作数据表

  9.2>操作数据行

10,使用

  10.1>手动创建一个数据库:---->create database 数据库名

  10.2>告诉Django连那个数据库

    DATABASES = {

      default:{

          "ENGINE":"django.db.backends.mysql"#连接数据库的类型

          "NAME":"数据库名",#数据库名

          "HOST":"127.0.0.1",#数据主机的地址

          "PORT":"3306",#数据库的端口

          "USER":"root",#数据的使用者是管理员

          "PASSEORD":""  

}

}

  10.3>连接数据库的方式

    利用第三方的包,eg:pymysql和MYSQLdb,告诉django用pymysql模块代替默认的MYSQLdb去连接MYSQL数据库和setting.py同级的__init__.py文件,写上:

    import pymysql

    pymysql.install_as_MYSQLdb()

  10.4>在app/models.py的文件中创建类

    类必须继承models.Model

  10.5>两个命令

    10.5.1>python manage.py makemigrations --->找个本本把models.py的变更记录一下

    10.5.2>python manage.py migrate  -->把上面变更的记录翻译成SQL语句,去数据库中执行

11,ORM查询

  类名(表名).object,filter(email="",pwd="")表的字段

11,登录函数的代码

# views业务逻辑代码
from app01.models import UserInfo # 把数据库导入进来
def login(request): # 定义一个全局变量当第一次进来获取页面的时候,不显示html变量的信息 error_msg = "" if request.method == "POST": # 1, 第二次进来的时候是POST请求要获取用户输入的用户名和密码 new_email = request.POST.get("email") new_pwd = request.POST.get("pwd") # 2, 从数据库中读取数据并校验用户输入的是否合法
ret_obj = UserInfo.objects.filter(email= new_email, pwd= new_pwd)
# 判断匹配是否成功
if ret_obj: # 此时如果匹配成功,得到的是匹配的对象 # 如果匹配成功,就说明存在该用户,让用户执行可执行得到操作页面
return redirect("/index/") # 跳转到index这个页面,同网站跳转用绝对路径 # 假如没有匹配成功就要给用于提示页面 error_msg = "邮箱或者密码不正确 "
# 3, 如果是第一次进来,用户需要获得一个登录页面,这时是一个get请求 return render(request, "login.html", {"error_msg":error_msg}) def index(reuest): return render(request, "index.html", {"error_msg":error_msg})

最新文章

  1. Android与H5交互
  2. sqlserver 2008 数据库表结构脚本及数据导出
  3. "2016-10-06T12:09:18.303+0800"
  4. ES6中generator传参与返回值
  5. Linux驱动设计—— 中断与时钟
  6. CSS属性--过渡(transtion)
  7. (转载)MS SQL Server 未公开的加密函数有哪些?
  8. Sharepoint 2010 根据用户权限隐藏Ribbon菜单
  9. (转)BAT及各大互联网公司2014前端笔试面试题--Html,Css篇
  10. Unity3d 基于物理渲染Physically-Based Rendering之实现
  11. 系统重装c盘后,mysql重新设置
  12. Java MongoDB 资料集合
  13. Oracle EBS-SQL (PO-13):检查采购物料无一揽子协议价格.sql
  14. [TroubleShooting] The server network address can not be reached or does not exist
  15. shell基本语法
  16. GDT与LDT
  17. 使用git工具上传自己的程序到github上
  18. 运行Docker镜像
  19. Asterisk的type类型和身份认证
  20. Gulp安装笔记(转)已经测试过

热门文章

  1. hdu1394(Minimum Inversion Number)线段树
  2. LeetCode(21)Merge Two Sorted Lists
  3. 【UVA 10820】Send a Table(欧拉函数)
  4. 关于Hibernate中No row with the given identifier exists问题的原因及解决
  5. Action中result的各种转发类型
  6. JS获取所有LI中第三个<SPAN>
  7. POJ 2195 Going Home【最小费用流 二分图最优匹配】
  8. poj2446 Chessboard 【最大匹配】
  9. android开发里跳过的坑-电源锁WakeLock不起作用
  10. POJ 2135 最小费用最大流 入门题