1,在django中用于提交的form表单中的三要素:

  1.1>form标签要有action和method,上传文件需要额外指定的enctype

  1.2>获取用户输入的标签要有name属性(用于提交数据的时候作为键)

  1.3>必须要有submit按钮(要不然提交数据没法放到URL中)

2,Django基础必会三件套

  form django.shortcuts import GttpsRespose(返回一个字符串), render(打开一个html文件,读取出来以后发送给浏览器), redirect(跳转页面,是跳转到一个可执行函数,再有函数的返回值,去返回一个html页面)

  2.1>HttpResponse("ok")  -->把字符串的ok转化成二进制的bytes形式,然后按照HTTP响应的格式要求返回

  2.2>render(request, "login.html") -->打开文件,以二进制的方式读取内容,按照响应格式返回

  2.3>render(request, "login.html", {"key":"value"})  -->打开文件,读取内容(读出来是字符串,然后把"key"用"value"替换,按照响应格式返回浏览器)

  2.4>redirect("/index/")  -->在同网站不同地址间跳转(返回的是重定向的响应)

  2.5>redirect("https://www.baidu.com")  -->让浏览器访问指定的网址

3,request:所有和请求相关的数据都封装在这个request对象中

  3.1>request.method -->当前这次请求的方法(GET/POST)

  3.2>request.GET -->取到URL里面携带的参数

  3.3>request.POST -->取到POST提交的数据(form表单提交的数据)

4,模板语言 (HTML中农的特殊符号)

  {{ name }}  {{ "name":"闷骚哥" }}

5,APP(项目中的一个包)

  5.1>Django中创建app:

    python manage.py startapp app,名

  52>注册到Django中:

    settings.py中的INSTALL_APPS = ["app名"]

6,图书管理系统之出版社的增删改查

  6.1>表的结构设计

    6.1.1>出版社: id name

    6.1.2>作者:id name

    6.1.3>书: id title 出版社_id

    6.1.4>作者 _书_关系表: id书_id 作者_id 

7,ORM的语句

  7.1>类名.objects.all()   -->返回的是这个类的所有的对象 放在一个列表里

  7.2>类名.objects.filter()  -->返回的是一个符合条件的对象列表

  7.3>类名.objects.get()   -->返回的是一个对象,如果没有,或者多个 符合条件的对象,都会报错

  7.4>类名.objects.create(name="刚刚获得的条件")  -->创建一个对象,返回的就是刚刚创建的那个对象  

   7.5>类名.objects.filter(id=).delete.()  -->删除对象

  7.6>obj=类名.objects.get(id="")  -->获取要修改的对象(根据id值)

    obj.name = "修改的新值"  -- 修改对象的属性(修改某行数据某个字段的值)     obj.save()    -->把修改的数据同步到数据库

8,Django模板语言

  8.1>for循环

    {% for i in ret %}-------------------------->应用for循环一般是拿到的是一个对象的列表

      {{ forloop.counter }}    -------------->for循环从1开始计数

      {{ forloop.counter0 }}   --------------->for循环从0开始计数

    {{% endfor %}}     ------------------------>结束否循环的语句 

9,登录函数的示例代码:

# 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})

10,出版社的增删改查

# 查看所有的出版社列表
def press_list(request):
# 读取数据库中的数据
press_data = Press.objects.all()
# 返回出版社页面
return render(request, "press_list.html", {"press_data":press_data
}) def add_press(request):
# 2 ,第二次进来是POST请求时用户提交信息的时候
if request.method == "POST":
# 获取用户输入的信息
new_press_name = request.POST.get("name")
# 把获取到的信息更新的到数据库中
Press.objects.create(name=new_press_name)
# 给用户展示添加以后的页面
return redirect("/press_list/")
#1 第一次进来是get请求,需要返回给用户一个增加的页面
return render(request, "add_press.html")
def delete_press(request):
# 1 获取到用户选择删除的id值
delete_id = request.GET.get("id")
# 2找到要删除的对象并且删除 Press.objects.filter(id=delete_id).delete() # 3 向用户展示删除以后额结果 return redirect("/press_list/")
def edit_press(request): # 1 获取用户要删除的出版社id
edit_id = request.GET.get("id")
# 2 获取该id值的对应的对象
edit_obj = Press.objectes.get(id= edit_id) # 3 第二次进来是POST请求,这次是用户提交修改过后的数据 if request.method == "POST": # 获取用户输入的出版社名称 edit_press_name = request.POST.get("name") # 更新到数据库中 edit_obj.name = edit_press_name # 写到数据库中要save()刷新一下 edit_obj.save() # 给用户展示删除后的出版社清单 return redirect("/press_list/") # 2第一次进来的时候是GET请求,给用户编辑的页面 # 需要先从数据库中获取到被点击删除的出版社名称 press_name = edot _obj.name return render(request, "edit_press.html", {"press_data":press_name})

Django初识二的更多相关文章

  1. Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识

    本节内容 JavaScript 正则表达式 Django初识 正则表达式 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  2. Django 初识

    Django  初识 一.前言 Django是一款网站架构,能够快速的搭建一个网站.openstack的界面显示使用的就是Django的框架.所以,学习openstack多少要了解一些Django的内 ...

  3. Web框架的原理和Django初识

    一.Web框架的本质 1.本质 实际上Web应用本质上就是一个socket服务端, 而用户的浏览器就是一个socket客户端. 2.最原始的web框架 socket服务端 import socket ...

  4. Django初识 学习笔记一

    Django初识 学习笔记一 mvcviewsmodelstemplate. 一 MVC框架 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(c ...

  5. Django框架(一)-Django初识

    Django初识 一.Web框架本质—自己实现Web框架 1.所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端 import socket sk = sock ...

  6. django初识1

    django django初识 django的本质就是基于socket通信 一.127.0.0.1 本地回环地址 后面:8001是端口号 /ppt是根目录下的ppt子网页 二./当前网站的客户端(根目 ...

  7. django模型二

    django模型二 常用模型字段类型 IntegerField   →    int CharField   →   varchar TextField  →    longtext DateFiel ...

  8. Python之旅Day15 Bootstrap与Django初识

    Bootstrap初识 Bootstrap简介 Bootstrap 是最受欢迎的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目.(官网http://www.boo ...

  9. Django分页(二)

    Django分页(二) 要求 .设定每页显示数据条数 # # .用户输入页码(第一页.第二页...) # # .设定显示多少页号 # # .获取当前数据总条数 # # .根据设定显示多少页号和数据总条 ...

随机推荐

  1. Python的Turtle绘制纳兹咩的娘口三三

    今天看完夏目友人帐的大电影,哭成了泪猴~ 所以我打算用Python画一只娘口三三陪伴在我身边 不过.. 画的太丑,还没上色..,你们可以完善一下~ 代码放在这里了 import turtle as t ...

  2. shell for mysql backup in linux

    今天上班只有一台linux系统,就学着在linux上写了个脚本,没啥技术含量 省得每天敲代码备份 没有设置自动备份时间,这里可以参照 http://www.th7.cn/db/mysql/201305 ...

  3. Web安全解决方案

    什么是 .NET Framework 安全性? .NET Framework 提供了用户和代码安全模型,允许对用户和代码可以执行的操作进行限制.要对基于角色的安全性和代码访问安全性进行编程,可以从 S ...

  4. Sublime Text 3使用方法

    一.下载安装 Sbulime Text 3官网   参考网站:http://lucida.me/blog/sublime-text-complete-guide/注意在安装时勾选Add to expl ...

  5. 【java 理论篇 2】J2EE的13种规范

    导读:看完了J2EE的视频,没有什么技术实践,现在就从理论上说明一下J2EE的13种规范,以及现在的自己对它的一个理解.可能会有偏差,但是,算是做为目前的一个记录. 一.13种规范 1.1.JDBC( ...

  6. 表连接sql执行计划学习

    循环嵌套连接(Nested Loop Join) 合并连接(Merge Join) 哈西匹配(Hash Join) 文章:浅谈SQL Server中的三种物理连接操作 循环嵌套,如果内循环列上有索引, ...

  7. python多线程--优先级队列(Queue)

    Python的Queue模块中提供了同步的.线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue.这些队列都实现 ...

  8. POJ 1379 (随机算法)模拟退火

    题目大意: 给定一堆点,找到一个点的位置使这个点到所有点中的最小距离最大 这里数据范围很小,精度要求也不高,我们这里可以利用模拟退火的方法,随机找到下一个点,如果下一个点比当前点优秀就更新当前点 参考 ...

  9. 神秘数(bzoj 4408)

    Description 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13}, 1 = 1 2 = 1+1 3 = 1+1+1 4 = 4 5 = ...

  10. Flume+kakfa+sparkStream实时处理数据测试

    flume:从数据源拉取数据 kafka:主要起到缓冲从flume拉取多了的数据 sparkStream:对数据进行处理   一.flume拉取数据   1.源数据文件读取配置   在flume目录的 ...