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. Unity3D ParticleSystem粒子系统

    粒子系统检视面板 点击粒子系统检视面板的右上角的"+"来增加新的模块.(Show All Modules:显示全部) 初始化模块: 持续时间(Duration):粒子系统发射粒子的 ...

  2. 几种 WebP 动态图制作方法

    1.RealWorld Paint 目前唯一有图形用户界面的 动态 webp 编辑器, 利用最新版本 libwebp v1.0.0 生成的有损动态图是打不开.这个有两个版本, 推荐使用 2013.1, ...

  3. oracle 11.2.0.4 rac 打补丁

    本次安装pus环境是11.2.0.4 rac,打的patch为11.2.0.4.180717 (Includes Database PSU),gi补丁和数据库补丁一起打 安装最新opatch版本 un ...

  4. python介绍、解释器、变量及其它

    python 一.python及编程语言介绍 编程语言发展:机器语言==>汇编语言==>高级语言 机器语言:由数字电路发展而来编程都是靠0101的二进制进行 汇编语言:汇编语言的实质和机器 ...

  5. Codeforces 993E Nikita and Order Statistics [FFT]

    洛谷 Codeforces 思路 一开始想偏想到了DP,后来发现我SB了-- 考虑每个\(a_i<x\)的\(i\),记录它前一个和后一个到它的距离为\(L_i,R_i\),那么就有 \[ an ...

  6. Java学习——面向对象【3】

    1. 继承  java的类是单继承(一个子类只能继承一个父类),不能多继承(多个父类):A继承自B,A也继承自C,可以多重继承,就是A继承自B,B继承自C(A->B->C), 所有的类都继 ...

  7. chkconfig: command not found

    问题描述 Ubuntu 16.04 下安装 Nginx 服务器,在添加 nginx 服务时出现如下信息 # chkconfig --add nginx chkconfig: command not f ...

  8. Linux 用户(user)和用户组(group)管理概述

    一.理解Linux的单用户多任务,多用户多任务概念: Linux 是一个多用户.多任务的操作系统:我们应该了解单用户多任务和多用户多任务的概念: 1.Linux 的单用户多任务:单用户多任务:比如我们 ...

  9. 1005:Number Sequence(hdu,数学规律题)

    Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1 ...

  10. tensorflow(1) 基础: 神经网络基本框架

    1.tensorflow 的计算得到的是计算图graph import tensorflow as tf a=tf.constant([1.0,2.0]) b=tf.constant([3.0,4.0 ...