Django之单表的增删改查
books/urls.py
- """books URL Configuration
- The `urlpatterns` list routes URLs to views. For more information please see:
- https://docs.djangoproject.com/en/1.11/topics/http/urls/
- Examples:
- Function views
- 1. Add an import: from my_app import views
- 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
- Class-based views
- 1. Add an import: from other_app.views import Home
- 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
- Including another URLconf
- 1. Import the include() function: from django.conf.urls import url, include
- 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
- """
- from django.conf.urls import url
- from django.contrib import admin
- from book_obj import views
- urlpatterns = [
- url(r'^admin/', admin.site.urls),
- url(r'^books/', views.book),
- url(r'^add_books/', views.add_book),
- url(r'^del_books/', views.del_book),
- url(r'^edit_books/', views.edit_book),
- ]
books/settings.py
- """
- Django settings for books project.
- Generated by 'django-admin startproject' using Django 1.11.15.
- For more information on this file, see
- https://docs.djangoproject.com/en/1.11/topics/settings/
- For the full list of settings and their values, see
- https://docs.djangoproject.com/en/1.11/ref/settings/
- """
- import os
- # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
- BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- # Quick-start development settings - unsuitable for production
- # See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/
- # SECURITY WARNING: keep the secret key used in production secret!
- SECRET_KEY = '@9_h!7w793k^6uw95^ooybm1+xx4&)u35n%cnfl+%sz@7_^+^8'
- # SECURITY WARNING: don't run with debug turned on in production!
- DEBUG = True
- ALLOWED_HOSTS = []
- # Application definition
- INSTALLED_APPS = [
- 'django.contrib.admin',
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- 'book_obj.apps.BookObjConfig',
- ]
- MIDDLEWARE = [
- 'django.middleware.security.SecurityMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.common.CommonMiddleware',
- # 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- 'django.middleware.clickjacking.XFrameOptionsMiddleware',
- ]
- ROOT_URLCONF = 'books.urls'
- TEMPLATES = [
- {
- 'BACKEND': 'django.template.backends.django.DjangoTemplates',
- 'DIRS': [os.path.join(BASE_DIR, 'templates')]
- ,
- 'APP_DIRS': True,
- 'OPTIONS': {
- 'context_processors': [
- 'django.template.context_processors.debug',
- 'django.template.context_processors.request',
- 'django.contrib.auth.context_processors.auth',
- 'django.contrib.messages.context_processors.messages',
- ],
- },
- },
- ]
- WSGI_APPLICATION = 'books.wsgi.application'
- # Database
- # https://docs.djangoproject.com/en/1.11/ref/settings/#databases
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql',
- 'NAME': "book_db",
- "HOST" : "127.0.0.1",
- "USER" : "root",
- "PASSWORD" : "333",
- "PORT" : 3306,
- }
- }
- # Password validation
- # https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators
- AUTH_PASSWORD_VALIDATORS = [
- {
- 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
- },
- {
- 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
- },
- {
- 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
- },
- {
- 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
- },
- ]
- # Internationalization
- # https://docs.djangoproject.com/en/1.11/topics/i18n/
- LANGUAGE_CODE = 'en-us'
- TIME_ZONE = 'UTC'
- USE_I18N = True
- USE_L10N = True
- USE_TZ = True
- # Static files (CSS, JavaScript, Images)
- # https://docs.djangoproject.com/en/1.11/howto/static-files/
- STATIC_URL = '/static/'
- STATIC_DIRS = [
- os.path.join(BASE_DIR,"static")
- ]
book_obj/__init__.py
- import pymysql
- pymysql.install_as_MySQLdb()
book_obj/models.py
- from django.db import models
- # Create your models here.
- class Pbook (models.Model):
- name = models.CharField(max_length=32,unique=True)
- def __str__(self):
- return self.name
book_obj/views.py
- from django.shortcuts import render,HttpResponse,redirect
- from book_obj import models
- # Create your views here.
- def book(request):
- all = models.Pbook.objects.all().order_by("id")
- return render(request,"book.html",{"bookconcerns": all})
- #增加出版社
- def add_book(request):
- add_name,err_msg = "",""
- if request.method =="POST":
- add_name = request.POST.get("new_name")
- pub_list = models.Pbook.objects.filter(name=add_name)
- if add_name and not pub_list:
- models.Pbook.objects.create(name=add_name)
- print("1")
- return redirect("/books/")
- if not add_name:
- err_msg = "输入内容不能为空"
- if pub_list:
- err_msg = "出版社已存在"
- return render(request,"add_book.html",{"err_name" : add_name,"err_msg" : err_msg})
- #删除出版社
- def del_book(request):
- del_id = request.GET.get("id")
- del_list = models.Pbook.objects.filter(id=del_id)
- if del_list:
- del_list.delete()
- return redirect("/books/")
- else:
- return HttpResponse("删除失败")
- #编辑出版社
- def edit_book(request):
- edit_id = request.GET.get("id")
- edit_list = models.Pbook.objects.filter(id=edit_id)
- err_msg = ""
- if request.method == "POST":
- edit_name = request.POST.get("new_name")
- check_list = models.Pbook.objects.filter(name=edit_name)
- if edit_name and edit_list and not check_list:
- edit_obj = edit_list[0]
- edit_obj.name = edit_name #更改name值
- edit_obj.save() #更改后保存在数据库中
- return redirect("/books/")
- if check_list:
- err_msg = "出版社已存在"
- if not edit_name:
- err_msg = "出版社不能为空"
- if edit_list:
- edit_obj = edit_list[0]
- return render(request,"edit_book.html",{"old_obj" : edit_obj,"err_msg" : err_msg})
- else:
- return HttpResponse("数据不存在哦")
templates/book.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>出版社</title>
- <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
- <style>
- .cc{
- margin-left: 90%;
- }
- </style>
- </head>
- <body>
- <table class="table table-bordered">
- <thead>
- <tr>
- <th>序号</th>
- <th>ID</th>
- <th>出版社</th>
- <th>基操</th>
- <th>勿6</th>
- </tr>
- </thead>
- <tbody>
- {% for bookconcern in bookconcerns %}
- <tr>
- <td>{{ forloop.counter }}</td>
- <td>{{ bookconcern.id }}</td>
- <td>{{ bookconcern.name }}</td>
- <td>
- <a href="/del_books/?id={{ bookconcern.id }}">
- <button type="button" class="btn btn-danger">删除</button>
- </a>
- </td>
- <td>
- <a href="/edit_books/?id={{ bookconcern.id }}">
- <button type="button" class="btn btn-warning">编辑</button>
- </a>
- </td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- <a href="/add_books/" class="cc"><button type="button" class="btn btn-primary">增加出版社</button></a>
- </body>
- </html>
templates/add_book.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>增加出版社</title>
- <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
- <style>
- .input-group-addon{
- width: 150px;
- }
- .form-control{
- width: 300px;
- }
- #vv{
- position: relative;
- left: 500px;
- }
- </style>
- </head>
- <body>
- <form action="" method="post">
- <span>
- <span class="input-group-addon">出版社名称:</span>
- <input type="text" name="new_name" value="{{ err_name }}" class="form-control" aria-label="Amount (to the nearest dollar)">
- <button class="btn btn-primary" id="vv">提交</button>
- </span>
- <span>{{ err_msg }}</span>
- </form>
- </body>
- </html>
templates/edit_book.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>编辑页面</title>
- <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
- </head>
- <body>
- <h3>编辑出版社</h3>
- <form action="" method="post">
- <p>出版社名称:<input type="text" name="new_name" value="{{ old_obj.name }}"></p><span>{{ err_msg }}</span>
- <button class="btn btn-warning">提交</button>
- </form>
- </body>
- </html>
Django之单表的增删改查的更多相关文章
- Django学习笔记(10)——Book单表的增删改查页面
一,项目题目:Book单表的增删改查页面 该项目主要练习使用Django开发一个Book单表的增删改查页面,通过这个项目巩固自己这段时间学习Django知识. 二,项目需求: 开发一个简单的Book增 ...
- python全栈开发day61-django简单的出版社网站展示,添加,删除,编辑(单表的增删改查)
day61 django内容回顾: 1. 下载: pip install django==1.11.14 pip install -i 源 django==1.11.14 pycharm 2. 创建项 ...
- hibernate对单表的增删改查
ORM: 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping) 实现对单表的增删改查 向区域表中增加数据: 第一步: 新建一个Da ...
- django模型层 关于单表的增删改查
关于ORM MTV或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库, 通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...
- Django学习笔记--数据库中的单表操作----增删改查
1.Django数据库中的增删改查 1.添加表和字段 # 创建的表的名字为app的名称拼接类名 class User(models.Model): # id字段 自增 是主键 id = models. ...
- django 利用ORM对单表进行增删改查
牛小妹上周末,一直在尝试如何把数据库的数据弄到界面上.毕竟是新手,搞不出来,文档也看不懂.不过没关系,才刚上大学.今晚我们就来解释下,要把数据搞到界面的第一步.先把数据放到库里,然后再把数据从库里拿出 ...
- Django中对单表的增删改查
之前的简单预习,重点在后面 方式一: # create方法的返回值book_obj就是插入book表中的python葵花宝典这本书籍纪录对象 book_obj=Book.objects.creat ...
- Django中多表的增删改查操作及聚合查询、F、Q查询
一.创建表 创建四个表:书籍,出版社,作者,作者详细信息 四个表之间关系:书籍和作者多对多,作者和作者详细信息一对一,出版社和书籍一对多 创建一对一的关系:OneToOne("要绑定关系的表 ...
- Django 文件配置、pycharm及django连接数据库、表的增删改查 总结
静态文件配置 1.你在浏览器中输入网址能够有响应的资源返回给你 是因为后端已经提前给你开设该资源的接口,也就意味着你所能 访问到的资源 都是人家事先定义好的 2.django如何给用户开设资源接口呢? ...
随机推荐
- ASP.NET AJAX入门系列(5):使用UpdatePanel控件(二)
UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,只要在一个页面上添加 ...
- ListBox,CheckBoxList,DropDownList,RadioButtonList的常见数据绑定
ListBox,CheckBoxList,DropDownList,RadioButtonList的常见用法 四个都是选择控件,用法大同小异,基本都是指定键值对: 直接加选择项: void way1( ...
- JS语法学习笔记
JS语法: JS知识点一览图 JS知识点一览图 在function中写this,在本function中可以显示,写Person则显示undefined. 在function中写Person,在func ...
- centos 7 安装JDK (Linux安装jdk)
centos 7安装JDK (Linux安装jdk) 第一部分 首先查看centos 7是否有openjdk,如没有就跳过第一部分,直接第二部分. [master@bogon ~]$ java -ve ...
- codevs 1277 生活大爆炸 2012年CCC加拿大高中生信息学奥赛
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description Sheldon and Leonard are physicists wh ...
- 洛谷 P2916 [USACO08NOV]为母牛欢呼Cheering up the Cows
题目描述 Farmer John has grown so lazy that he no longer wants to continue maintaining the cow paths tha ...
- poj1595 水题
题意:输入n, 和c 统计1 - n 有多少个素数为cnt 若 2*c > cnt 则将素数全部输出 否则分支判断: 若cnt 为偶数,则从中心开始输出2*c 个 若cnt 为奇数,则从中 ...
- JS实现跑马灯效果(向左,向上)
<html> <head> <title>JS实现跑马灯效果</title> <style> * { font-size:12px; fon ...
- 新数据的GT列表
制作新数据集时需要重新制作train_GT,test_GT 代码: dic = {} with open('/home/bnrc/all_image_GT.txt','r') as file: for ...
- blog.yiz96.com
欢迎访问我的新博客 blog.yiz96.com