django框架两个使用模板实例


Posted in Python onDecember 11, 2019

本文实例讲述了django框架使用模板。分享给大家供大家参考,具体如下:

models.py:

from django.db import models
# Create your models here.
class Book(models.Model):
  title=models.CharField(max_length=32,unique=True)
  price=models.DecimalField(max_digits=8,decimal_places=2,null=True)
  pub_date=models.DateField()
  publish=models.CharField(max_length=32)
  is_pub=models.BooleanField(default=True)
  authors=models.ManyToManyField(to="Author")
class AuthorDetail(models.Model):
  gf=models.CharField(max_length=32)
  tel=models.CharField(max_length=32)
class Author(models.Model):
  name=models.CharField(max_length=32)
  age=models.IntegerField()
  # 与AuthorDetail建立一对一的关系
  # ad=models.ForeignKey(to="AuthorDetail",to_field="id",on_delete=models.CASCADE,unique=True)
  #OneToOneField 表示创建一对一关系。on_delete=models.CASCADE 表示级联删除。假设a表删除了一条记录,b表也还会删除对应的记录
  ad=models.OneToOneField(to="AuthorDetail",to_field="id",on_delete=models.CASCADE,)

urls.py:

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
  url(r'^admin/', admin.site.urls),
  # url(r'',views.index),#这一条不能放上面,会造成死循环
  url(r'index/$',views.index),
  url(r'books/add/$',views.add),
  url(r'books/manage/',views.manage),
  url(r'books/delete/(?P<id>\d+)',views.delete),
  url(r'books/modify/(?P<id>\d+)',views.modify),
]

views.py:

from django.shortcuts import render,HttpResponse
from app01 import models
# Create your views here.
def index(request):
  ret=models.Book.objects.all().exists()#True 和 False
  if ret:
    book_list=models.Book.objects.all()
    return render(request,'index.html',{'book_list':book_list})
  else:
    # hint='<script>alert("没有书籍,请添加书籍");window.location.href="/books/add" rel="external nofollow" rel="external nofollow" </script>'
    hint='<script>alert("没有书籍,请添加书籍");window.location.href="/books/add/" rel="external nofollow" </script>'
    return HttpResponse(hint)
def add(request):
  if request.method=="POST":
    title=request.POST.get("title")
    price=request.POST.get("price")
    pub_date=request.POST.get("pub_date")
    publish=request.POST.get("publish")
    is_pub=request.POST.get("is_pub")
    #插入一条记录
    obj=models.Book.objects.create(title=title,price=price,publish=publish,pub_date=pub_date,is_pub=is_pub)
    print(obj.title)
    hint = '<script>alert("添加成功");window.location.href="/index/" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" </script>'
    return HttpResponse(hint)
  return render(request,"add.html")
def manage(request):
  ret=models.Book.objects.all().exists()
  print(ret)
  if ret:
    book_list=models.Book.objects.all()
    return render(request,"manage.html",{"book_list":book_list})
  else:
    hint='<script>alert("没有书籍,请添加书籍");window.location.href="/books/add" rel="external nofollow" rel="external nofollow" </script>'
    return HttpResponse(hint)
def delete(request,id):
  ret=models.Book.objects.filter(id=id).delete()
  print('删除记录%s'%ret)
  if ret[0]:
    hint='<script>alert("删除成功");window.location.href="/index/" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" </script>'
    return HttpResponse(hint)
  else:
    hint='<script>alert("删除失败");window.location.href="/index/" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" </script>'
    return HttpResponse(hint)
def modify(request,id):
  if request.method=="POST":
    title=request.POST.get('title')
    price = request.POST.get("price")
    pub_date = request.POST.get("pub_date")
    publish = request.POST.get("publish")
    is_pub = request.POST.get("is_pub")
    # 更新一条记录
    ret = models.Book.objects.filter(id=id).update(title=title, price=price, publish=publish, pub_date=pub_date,
                            is_pub=is_pub)
    print('更新记录%s'%ret)
    if ret: # 判断返回值为1
      hint = '<script>alert("修改成功");window.location.href="/index/" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" </script>'
      return HttpResponse(hint) # js跳转
    else: # 返回为0
      hint = '<script>alert("修改失败");window.location.href="/index/" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" </script>'
      return HttpResponse(hint) # js跳转
  book=models.Book.objects.get(id=id)
  return render(request,"modify.html",{"book":book})

index.html:

{% extends 'base.html' %}
{% block title %}
  <title>查看书籍</title>
{% endblock title %}
{% block content %}
  <h3>查看书籍</h3>
  <table class="table table-hover table-striped ">
        <thead>
           <tr>
             <th>名称</th>
             <th>价格</th>
             <th>出版日期</th>
             <th>出版社</th>
             <th>是否出版</th>
           </tr>
        </thead>
        <tbody>
           {% for book in book_list %}
           <tr>
             <td>{{ book.title }}</td>
             <td>{{ book.price }}</td>
             <td>{{ book.pub_date|date:"Y-m-d" }}</td>
             <td>{{ book.publish }}</td>
             <td>
               {% if book.is_pub %}
               已出版
               {% else %}
               未出版
               {% endif %}
             </td>
           </tr>
           {% endfor %}
        </tbody>
      </table>
{% endblock content %}

add.html:

{% extends 'base.html' %}
{% block title %}
<title>添加书籍</title>
{% endblock title %}
{% block content %}
<h3>添加书籍</h3>
<form action="" method="post">
   {% csrf_token %}
   <div class="form-group">
    <label for="">书籍名称</label>
    <input type="text" name="title" class="form-control">
  </div>
  <div class="form-group">
    <label for="">价格</label>
    <input type="text" name="price" class="form-control">
  </div>
  <div class="form-group">
     <label for="">出版日期</label>
    <input type="date" name="pub_date" class="form-control">
  </div>
  <div class="form-group">
     <label for="">出版社</label>
     <input type="text" name="publish" class="form-control">
  </div>
  <div class="form-group">
     <label for="">是否出版</label>
    <select name="is_pub" id="" class="form-control">
      <option value="1">已出版</option>
      <option value="0" selected="selected">未出版</option>
    </select>
  </div>
  <input type="submit" class="btn btn-success pull-right" value="添加">
</form>
{% endblock content %}

base.html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  {% block title %}
  <title>Title</title>
  {% endblock title %}
  <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="external nofollow" >
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    .header {
      width: 100%;
      height: 60px;
      background-color: #369;
    }
    .title {
      line-height: 60px;
      color: white;
      font-weight: 100;
      margin-left: 20px;
      font-size: 20px;
    }
    .container{
      margin-top: 20px;
    }
  </style>
</head>
<body>
<div class="header">
  <p class="title">
    书籍操作
  </p>
</div>
<div class="container">
  <div class="row">
    <div class="col-md-3">
      <div class="panel panel-danger">
        <div class="panel-heading"><a href="http://127.0.0.1:8000/index/" rel="external nofollow" >查看书籍</a></div>
        <div class="panel-body">
          Panel content
        </div>
      </div>
      <div class="panel panel-success">
        <div class="panel-heading"><a href="http://127.0.0.1:8000/books/add/" rel="external nofollow" >添加书籍</a></div>
        <div class="panel-body">
          Panel content
        </div>
      </div>
      <div class="panel panel-warning">
        <div class="panel-heading"><a href="http://127.0.0.1:8000/books/manage/" rel="external nofollow" >管理书籍</a></div>
        <div class="panel-body">
          Panel content
        </div>
      </div>
    </div>
    <div class="col-md-9">
      {% block content %}
      {% endblock content %}
    </div>
  </div>
</div>
</body>
</html>

manage.py:

{% extends 'base.html' %}
{% block title %}
  <title>管理书籍</title>
{% endblock title %}
{% block content %}
  <h3>管理书籍</h3>
<table class="table table-hover table-striped ">
        <thead>
           <tr>
             <th>名称</th>
             <th>价格</th>
             <th>出版日期</th>
             <th>出版社</th>
             <th>是否出版</th>
             <th>删除</th>
             <th>编辑</th>
           </tr>
        </thead>
        <tbody>
           {% for book in book_list %}
           <tr>
             <td>{{ book.title }}</td>
             <td>{{ book.price }}</td>
             <td>{{ book.pub_date|date:"Y-m-d" }}</td>
             <td>{{ book.publish }}</td>
             <td>
               {% if book.is_pub %}
               已出版
               {% else %}
               未出版
               {% endif %}
             </td>
             <td>
               <a href="/books/delete/{{ book.id }}" rel="external nofollow" >
                 <button type="button" class="btn btn-danger" data-toggle="modal" id="modelBtn">删除</button>
               </a>
             </td>
             <td>
                <a href="/books/modify/{{ book.id }}" rel="external nofollow" >
                  <button type="button" class="btn btn-success" data-toggle="modal">编辑</button>
                </a>
             </td>
           </tr>
           {% endfor %}
        </tbody>
      </table>
{% endblock content %}

modify.py:

{% extends 'base.html' %}
{% block title %}
<title>修改书籍</title>
{% endblock title %}
{% block content %}
<h3>修改书籍</h3>
<form action="" method="post">
   {% csrf_token %}
   <div class="form-group">
    <label for="">书籍名称</label>
    <input type="text" name="title" class="form-control" value="{{ book.title }}">
  </div>
  <div class="form-group">
    <label for="">价格</label>
    <input type="text" name="price" class="form-control" value="{{ book.price }}">
  </div>
  <div class="form-group">
     <label for="">出版日期</label>
    <input type="date" name="pub_date" class="form-control" value="{{ book.pub_date|date:"Y-m-d" }}">
  </div>
  <div class="form-group">
     <label for="">出版社</label>
     <input type="text" name="publish" class="form-control" value="{{ book.publish }}">
  </div>
  <div class="form-group">
     <label for="">是否出版</label>
    <select name="is_pub" id="" class="form-control">
      {% if book.is_pub %}
        <option value="1" selected="selected">已出版</option>
        <option value="0">未出版</option>
      {% else %}
        <option value="1">已出版</option>
        <option value="0" selected="selected">未出版</option>
      {% endif %}
    </select>
  </div>
  <input type="submit" class="btn btn-default pull-right" value="修改">
</form>
{% endblock content %}

django框架两个使用模板实例

django使用一对多和多对多关系建表之后的增删改查

-------models.py-----

from django.db import models
# Create your models here.
class Book(models.Model):
  title=models.CharField(max_length=32)
  price=models.DecimalField(max_digits=6,decimal_places=2)
  create_time=models.DateField()
  memo=models.CharField(max_length=32,default="")
  publish=models.ForeignKey(to="Publish",default=1)
  author=models.ManyToManyField("Author")#on_delete=models.CASCADE()默认级联删除
  def __str__(self):
    return self.title
class Publish(models.Model):
  name=models.CharField(max_length=32)
  email=models.CharField(max_length=32)
class Author(models.Model):
  name=models.CharField(max_length=32)
  def __str__(self): return self.name

-----urls.py----

from django.conf.urls import url,include
from django.contrib import admin
from app01 import views
urlpatterns = [
  url(r'^admin/', admin.site.urls), 
  url(r'^books/$',views.books), #查看
  url(r'^addbook/$',views.addbook), #增加
  url(r'^delbook/(\d+)/$',views.delbook), #删除
  url(r'editbook/(\d+)/$',views.editbook), #修改
]

----views.py 在app01下面-------

from django.shortcuts import render,HttpResponse,redirect
from .models import * 
def books(request):
  book_list=Book.objects.all()
  return render(request,"books.html",locals())
def addbook(request):
  if request.method=="POST":
    title=request.POST.get("title") #get方法取的是html页面中的name属性
    price= request.POST.get("price")
    date = request.POST.get("date")
    publish_id=request.POST.get("publish_id")
    # author_id_list = request.POST.get("author_id_list") #此方法只能取到最后一个值
    author_id_list = request.POST.getlist("author_id_list") #有多个值的注意要用getlist
    #绑定书籍与出版社一对多的关系
    obj=Book.objects.create(title=title,price=price,create_time=date,publish_id=publish_id)
    #绑定书籍与作者多对多的关系
    obj.author.add(*author_id_list)
    # obj.author.remove(1,2) #解除关系
    # obj.author.clear() #清空所有关系
    return redirect("/books/")
  else:
    publish_list=Publish.objects.all()
    author_list=Author.objects.all()
  return render(request,"addbook.html",locals())
def delbook(request,id):
  Book.objects.filter(id=id).delete()
  return redirect("/books/")
def editbook(request,id):
  if request.method=="POST":
    title=request.POST.get("title") #get方法取的是html页面中的name属性
    price=request.POST.get("price") 
    date=request.POST.get("date")
    publish_id=request.POST.get("publish_id")
    author_id_list=request.POST.getlist("author_id_list")
    Book.objects.filter(id=id).update(title=title,price=price,create_time=date,publish_id=publish_id)
    book=Book.objects.filter(id=id).first()
    # book.author.clear()
    # book.author.add(*author_id_list)
    book.author.set(author_id_list) #相当于上面两条
    return redirect ("/books/")
  edit_obj=Book.objects.filter(id=id).first() #加first从queryset得到 models对象
  publish_list = Publish.objects.all()
  author_list = Author.objects.all()
  return render(request,"editbook.html",locals())

----books.html----

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <link rel="stylesheet" href="/static/bs/css/bootstrap.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
</head>
<body>
<div class="container" style="margin-top:100px">
  <div class="row">
    <div class="col-md-6 col-md-offset-3">
      <a href="/addbook/" rel="external nofollow" ><button class="btn btn-primary">添加数据</button></a>
      <table class="table table-bordered table-striped">
      <thead>
      <tr>
      <th>序号</th>
      <th>书名</th>
      <th>价格</th>
      <th>出版时间</th>
        <th>出版社</th>
        <th>作者</th>
        <th>操作</th>
      </tr>
      </thead>
      <tbody>
      {% for book in book_list %}
        <tr>
          <td>{{ forloop.counter }}</td>
          <td>{{ book.title }}</td>
          <td>{{ book.price }}</td>
          <td>{{ book.create_time|date:"Y-m-d" }}</td>
        <td>{{ book.publish.name }}</td>
        <td> {% for author in book.author.all %}
          {{ author.name }}
          {% if not forloop.last %}
            ,
          {% endif %}
          {% endfor %}
        </td>
        <td>
          <a href="/delbook/{{ book.pk }}/" rel="external nofollow" >删除</a>
          <a href="/editbook/{{ book.pk }}/" rel="external nofollow" >编辑</a>
        </td>
        </tr>
      {% endfor %}
      </tbody>
      </table>
    </div>
  </div>
</div>
</body>
</html>

-----addbook.html-----

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <link rel="stylesheet" href="/static/bs/css/bootstrap.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
</head>
<body>
<div class="container" style="margin-top:100px">
  <div class="row">
    <div class="col-md-6 col-md-offset-3">
      <form action="/addbook/" method="post">
        {% csrf_token %}
        <p>书籍名称<input type="text" name="title"></p>
        <p>书籍价格<input type="text" name="price"></p>
        <p>出版日期<input type="text" name="date"></p>
        <p><select name="publish_id" id="">
          {% for publish in publish_list %}
          <option value="{{ publish.pk }}">{{ publish.name }}</option>
          {% endfor %}
        </select>
        </p>
        <p><select name="author_id_list" id="" multiple>
          {% for author in author_list %}
          <option value="{{ author.pk }}">{{ author.name }}</option>
          {% endfor %}
        </select>
        </p>
        <input type="submit" class="btn btn-default">
      </form>
    </div>
  </div>
</div>
</body>
</html>

-------editbook.html-----

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <link rel="stylesheet" href="/static/bs/css/bootstrap.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
</head>
<body>
<div class="container" style="margin-top:100px">
  <div class="row">
    <div class="col-md-6 col-md-offset-3">
      <form action="/editbook/{{ edit_obj.id }}/" method="post">
        {% csrf_token %}
        <p>书籍名称<input type="text" name="title" value="{{ edit_obj.title }}"></p>
        <p>书籍价格<input type="text" name="price" value="{{ edit_obj.price }}"></p>
        <p>出版日期<input type="text" name="date" value="{{ edit_obj.create_time|date:"Y-m-d" }}"></p>
        <p><select name="publish_id" id="">
          {% for publish in publish_list %}
            {% if edit_obj.publish == publish %}
            <option selected value="{{ publish.pk }}">{{ publish.name }}</option>
            {% else %}
            <option value="{{ publish.pk }}">{{ publish.name }}</option>
            {% endif %}
          {% endfor %}
        </select>
        </p>
        <p><select name="author_id_list" id="" multiple>
          {% for author in author_list %}
            {% if author in edit_obj.author.all %}
            <option selected value="{{ author.pk }}">{{ author.name }}</option>
            {% else %}
            <option value="{{ author.pk }}">{{ author.name }}</option>
            {% endif %}
          {% endfor %}
        </select>
        </p>
        <input type="submit" class="btn btn-default">
      </form>
    </div>
  </div>
</div>
</body>
</html>

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
python实现连接mongodb的方法
May 08 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
Python反射用法实例简析
Dec 22 Python
python多进程中的内存复制(实例讲解)
Jan 05 Python
Python实现自动上京东抢手机
Feb 06 Python
Python简单实现查找一个字符串中最长不重复子串的方法
Mar 26 Python
python自动发送邮件脚本
Jun 20 Python
使用Python自动化破解自定义字体混淆信息的方法实例
Feb 13 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
python实现图片九宫格分割
Mar 07 Python
详解PyQt5信号与槽的几种高级玩法
Mar 24 Python
Django如何使用jwt获取用户信息
Apr 21 Python
Python enumerate函数遍历数据对象组合过程解析
Dec 11 #Python
django框架基于queryset和双下划线的跨表查询操作详解
Dec 11 #Python
django框架ModelForm组件用法详解
Dec 11 #Python
django框架中ajax的使用及避开CSRF 验证的方式详解
Dec 11 #Python
通过实例解析Python调用json模块
Dec 11 #Python
Flask中endpoint的理解(小结)
Dec 11 #Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 #Python
You might like
phpmyadmin操作流程
2006/10/09 PHP
php根据身份证号码计算年龄的实例代码
2014/01/18 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
webix+springmvc session超时跳转登录页面
2016/10/30 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
JS简易计算器实例讲解
2020/06/30 Javascript
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python根据url地址下载小文件的实例
2018/12/18 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
2019/09/17 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
Django ModelForm操作及验证方式
2020/03/30 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
AJAX的全称是什么
2012/11/06 面试题
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
毕业生找工作求职信
2014/08/05 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技
Nginx限流和黑名单配置
2022/05/20 Servers
win7配置本地ftp服务器的图文教程
2022/08/05 Servers