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实例之wxpython中Frame使用方法
Jun 09 Python
Python编程中对文件和存储器的读写示例
Jan 25 Python
spyder常用快捷键(分享)
Jul 19 Python
Python创建对称矩阵的方法示例【基于numpy模块】
Oct 12 Python
django中的setting最佳配置小结
Nov 21 Python
Python中使用Counter进行字典创建以及key数量统计的方法
Jul 06 Python
python基础梳理(一)(推荐)
Apr 06 Python
Django urls.py重构及参数传递详解
Jul 23 Python
python @propert装饰器使用方法原理解析
Dec 25 Python
PyCharm第一次安装及使用教程
Jan 08 Python
Python根据URL地址下载文件并保存至对应目录的实现
Nov 15 Python
pycharm 快速解决python代码冲突的问题
Jan 15 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
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
php从字符串创建函数的方法
2015/03/16 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
PJBlog插件 防刷新的在线播放器
2006/10/25 Javascript
JCalendar 日历控件 v1.0 beta[兼容IE&amp;Firefox] 有文档和例子
2007/05/30 Javascript
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
$.format,jquery.format 使用说明
2011/07/13 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
详解Django中的过滤器
2015/07/16 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
python 通过exifread读取照片信息
2020/12/24 Python
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
含精油的天然有机化妆品:Indemne
2019/08/27 全球购物
DBA数据库管理员JAVA程序员架构师必看
2016/02/07 面试题
在校生钳工实习自我鉴定
2013/09/19 职场文书
北大青鸟学生求职信
2013/09/24 职场文书
国贸专业个人求职信范文
2014/01/08 职场文书
大连导游词
2015/02/12 职场文书
酒店收银员岗位职责
2015/04/07 职场文书
Python获取字典中某个key的value
2022/04/13 Python