day61
django内容回顾:
1. 下载:
pip install django==1.11.14
pip install -i 源 django==1.11.14
pycharm
2. 创建项目
命令行: djang-admin startproject 项目名
pycharm file ——》 new project ——》 选django 填项目名称 选解释器 app01 3. 启动项目:
命令行: python manage.py runserver
pycharm 配置修改 点绿三角
4. django的配置 settings.py
1. templates 模板 路径
2. 注释csrf中间件
3. 静态文件
STATIC_URL = '/static/' # 别名
STATICFILES_DIRS=[] #静态文件的路径
4. 数据库的配置 5. APP
创建APP:
命令行: python manage.py startapp app01
pycharm tools ——》run manage.py task ——》 startapp app01 注册APP:
在settings.py中的INSTALLED_APPS添加:
'app01' 或者 'app01.apps.App01Config',
6. views.py 写你的函数 业务逻辑
默认参数 request 请求相关内容
request:
request.method 请求方法 GET/POST
request.POST post请求提交的数据 字典
request.GET GET请求URL上携带的参数 基础必备三件套:
from django.shorcuts import HttpResponse,render,redirect
HttpResponse('返回的字符串') ——》 页面显示的内容
render(request,'HTML文件名') ——》返回一个HTML文件
redirect('跳转的URL') ——》告诉浏览器向另一个URL发请求 7. ORM
1. 对象和关系型数据的映射 通过操作对象的方式来操作数据库 2. 映射关系:
类 ——》 数据表
对象 ——》数据行
属性 ——》 字段 3. ORM功能:
操作数据表
操作数据行 4. mysql数据库:
1. 创建mysql数据库
2. 配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 引擎
'NAME': 'day60', # 数据库名字
'HOST': '127.0.0.1', # host地址
'PORT': 3306, # 端口号
'USER': 'root', # 用户名
'PASSWORD': '', # 密码
}
}
3. 告诉django使用pymysql来连数据库:
在项目同名的文件下的__init__.py中写下面的代码:
import pymysql
pymysql.install_as_MySQLdb()
4. 在app01/models.py中写类(继承models.Model):
class Userinfo(models.Model):
user = models.CharField(max_length=32)
pwd = models.CharField(max_length=32)
5. 执行两条数据库迁移的命令:
python manage.py makemigrations ——》 models变更情况记录到APP下的migrations文件夹下
python manage.py migrate ——》把所有的变更更新到数据库中 6. ORM操作:
from app01 import models
# 查询所有的对象
models.Userinfo.objects.all()
# 获取一个对象。如果查不到或者查到多个就会报错。
models.Userinfo.objects.get(user='alex',pwd='alexdsb')
# 创建一个对象
models.Userinfo.objects.create(user='alex',pwd='alexdsb') 8. form表单
1. method='post' action='' 提交方式 提交地址
2. input标签都有name属性
3. 一个type='submit' 的按钮或者input标签 (bootstrap的button按钮默认有提交事件)
今日内容:
1.单表的增删改查

课上笔记

django简单的出版社网站展示,添加,删除,编辑

展示函数和html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>出版社列表</title>
<style>
html{
user-select: none;
}
</style>
</head>
<body>
<table border="1" style="border-collapse: collapse;" cellpadding="5" bgcolor="#f0f8ff">
<thead>
<tr>
<th>序号</th>
<th>ID</th>
<th>名称</th>
<th colspan="2">操作</th>
</tr>
</thead>
<tbody>
{% for publisher in publishers %}
<tr>
<td>{{forloop.counter}}</td>
<td>{{ publisher.id }}</td>
<td>{{ publisher.name }}</td>
<td>
<a href="/del_publisher/?id={{ publisher.id }}">
<button>删除</button>
</a>
</td>
<td>
<a href="/edit_publisher/?id={{ publisher.id }}">
<button>编辑</button>
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a href="/add_publisher/">添加一个出版社</a>
<p style="color: red">{{ err_msg }}</p>
</body>
</html>

publisher_list.html

def publisher_list(request):
publishers = models.publisher.objects.all().order_by('id')
return render(request,'publisher_list.html', {'publishers': publishers})

添加:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>添加出版社</title>
</head>
<body>
<h1>添加出版社</h1>
<form action="" method="post">
<input type="text" name="name">
<p style="color: red;">{{ err_msg }}</p>
<button>提交</button> </form>
</body>
</html>

add_publisher.html

def add_publisher(request):
err_msg = '' if request.method == "POST":
new_name = request.POST.get('name')
if new_name:
name = models.publisher.objects.filter(name=new_name)
if not name:
models.publisher.objects.create(name=new_name)
return redirect('/publisher/') else:
err_msg = '数据已存在!'
else:
err_msg = '数据为空!'
return render(request, 'add_publisher.html', {"err_msg": err_msg})

add_publisher

删除:

def del_publisher(request):
err_msg = ''
del_id = request.GET.get('id')
del_obj_list = models.publisher.objects.filter(id=del_id)
if del_obj_list:
del_obj_list.delete()
return redirect('/publisher/')
else:
err_msg = '您要删除的数据不存在!'
return render(request, 'publisher_list.html', {"err_msg": err_msg})

del_publisher

编辑:

def edit_publisher(request):
err_msg = ''
edit_id = request.GET.get('id')
edit_obj_list = models.publisher.objects.filter(id=edit_id)
if request.method=='POST':
new_name = request.POST.get('name')
edit_name_list = models.publisher.objects.filter(name=new_name)
if not edit_name_list and edit_obj_list and new_name:
edit_obj_list[0].name = new_name
edit_obj_list[0].save()
return redirect('/publisher/')
elif not edit_obj_list:
err_msg = '您要修改的数据不存在!'
elif not new_name:
err_msg = '修改后名字不能为空'
else:
err_msg = '数据库已存在该名称'
return render(request, 'edit_publisher.html', {"err_msg": err_msg})

edit_publisher

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>编辑出版社</title>
</head>
<body>
<h1>编辑出版社</h1>
<form action="" method="post">
<input type="text" name="name">
<p style="color: red;">{{ err_msg }}</p>
<button>提交</button> </form>
</body>
</html>

edit_publisher.html

python全栈开发day61-django简单的出版社网站展示,添加,删除,编辑(单表的增删改查)的更多相关文章

  1. Django学习笔记(10)——Book单表的增删改查页面

    一,项目题目:Book单表的增删改查页面 该项目主要练习使用Django开发一个Book单表的增删改查页面,通过这个项目巩固自己这段时间学习Django知识. 二,项目需求: 开发一个简单的Book增 ...

  2. django模型层 关于单表的增删改查

    关于ORM MTV或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...

  3. Python全栈开发:django网络框架(一)

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  4. python 全栈开发,Day107(CRM初始,权限组件之权限控制,权限系统表设计)

    一.CRM初始 CRM,客户关系管理系统(Customer Relationship Management).企业用CRM技术来管理与客户之间的关系,以求提升企业成功的管理方式,其目的是协助企业管理销 ...

  5. python开发mysql:mysql安装(windows)&密码找回&存储引擎简介&库表的增删改查

    一,mysql安装 下载地址 https://dev.mysql.com/downloads/file/?id=471342 解压后,将目录C:\mysql-5.7.19-winx64\bin添加到计 ...

  6. Django中对单表的增删改查

    之前的简单预习,重点在后面 方式一: # create方法的返回值book_obj就是插入book表中的python葵花宝典这本书籍纪录对象   book_obj=Book.objects.creat ...

  7. django 利用ORM对单表进行增删改查

    牛小妹上周末,一直在尝试如何把数据库的数据弄到界面上.毕竟是新手,搞不出来,文档也看不懂.不过没关系,才刚上大学.今晚我们就来解释下,要把数据搞到界面的第一步.先把数据放到库里,然后再把数据从库里拿出 ...

  8. Django学习笔记--数据库中的单表操作----增删改查

    1.Django数据库中的增删改查 1.添加表和字段 # 创建的表的名字为app的名称拼接类名 class User(models.Model): # id字段 自增 是主键 id = models. ...

  9. day 47 Django 4的简单应用 创建简单的图书管理 (单表的增删改查)

    前情提要  Django  已经学了大半.. 很多东西已经能够使用在生产环境当中 一:模糊查询 二:单表删除 三:单表修改 四:图书管理 图书管理操作 视图结构 A:路由层 A :配置路由文件 参数解 ...

随机推荐

  1. windows下揪出java程序占用cpu很高的线程

    背景 天天搞java,这些监控也都知道,用过,但也没往细里追究.因为也没碰见这种问题,这次还是静下来走一遍流程吧.与网上基本一致,不过我区分了下linux和windows的不一样.我感觉基本是程序写成 ...

  2. python学习第1天

    01 cpu 内存 硬盘 操作系统 CPU:中央处理器,相当于人大脑. 飞机 内存:临时存储数据. 8g,16g, 高铁 1,成本高. 2,断电即消失. 硬盘:长期存储大量的数据. 1T 512G等等 ...

  3. java后台发送请求并获取返回值(续)

    在java后端发送请求给另一个平台,从而给前端实现 "透传"的过程中,出现:数据请求到了并传到了前端,但是控制台打印时中文显示Unicode码而前端界面中中文显示不出来!!!开始怀 ...

  4. python的生成器(斐波拉契数列(Fibonacci))

    代码: 函数版本: #斐波拉契数列(Fibonacci) def fib(max): n=0 a,b=0,1 while n < max: a,b = b,a+b n = n+1 return ...

  5. C# web Api ajax发送json对象到action中

    直接上代码: 1.Product实体

  6. 04 if条件判断 流程控制

    条件判断 if 语法一: if 条件: # 条件成立时执行的子代码块 代码1 代码2 代码3 示例: sex='female' age=18 is_beautiful=True if sex == ' ...

  7. python字符串,列表常用操作

    24天养成一个好习惯,第五天! 一.字符串需要掌握的操作 1.取值(索引取值)需要注意的是只能取,不能改 msg = 'hello world' print(msg[4]) 2.切片(顾头不顾尾) m ...

  8. mysql 中实现多条数据同时更新

    有时间我们需要对一张表进行批量数据的更新.首先我们想的是update 语句. 比如对一张订单表order_info 多条数据更新, update order_inifo set   order_cod ...

  9. C#将DLL嵌入到exe当中

    1.选中项目文件,找到Resources.resx,双击Resources.resx,然后添加文件(选择需要的dll文件),点击确定,项目下会自动生成一个Resources文件夹,里面包含添加dll. ...

  10. 设置 Confluence 6 日志

    Confluence 使用的是 Apache's log4j 日志服务.能够允许管理员通过编辑配置文件来控制日志的表现和日志输出文件.在系统中有 6 个日志输出级别,请参考 log4j logging ...