django框架两个使用模板实例

作者:dawn-liu 时间:2023-11-01 20:05:18 

本文实例讲述了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程序设计有所帮助。

来源:https://www.cnblogs.com/mmyy-blog/p/9883947.html

标签:django,模板
0
投稿

猜你喜欢

  • python实现一个围棋小游戏

    2022-02-02 18:52:50
  • MySQL启用SSD存储的实例详解

    2024-01-26 02:14:07
  • 一篇文章搞懂python的转义字符及用法

    2022-01-29 17:19:12
  • 举例讲解Python中的死锁、可重入锁和互斥锁

    2023-12-21 07:35:03
  • pip/anaconda修改镜像源,加快python模块安装速度的操作

    2022-06-01 10:42:26
  • golang中json反序列化可能遇到的问题

    2024-04-27 15:36:12
  • django自带的权限管理Permission用法说明

    2023-07-25 04:18:06
  • Flask web上传获取图像Image读取并使用方式

    2021-06-14 11:37:58
  • python机器学习基础决策树与随机森林概率论

    2023-06-04 16:55:08
  • python处理json字符串(使用json.loads而不是eval())

    2023-06-13 11:50:39
  • python 函数进阶之闭包函数

    2021-07-21 03:21:29
  • JavaScript+html实现前端页面随机二维码验证

    2024-04-19 09:48:59
  • SQL2000个人版 应用程序正常初始化失败0乘以C0000135失败

    2024-01-27 05:09:39
  • 判断li是否有样式的js代码

    2024-04-30 09:59:29
  • 分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]

    2024-04-25 13:09:11
  • Python爬虫Scrapy框架IP代理的配置与调试

    2022-09-19 08:20:26
  • python案例练习合集

    2021-03-04 15:30:27
  • Python基础之循环语句用法示例【for、while循环】

    2022-06-03 19:37:50
  • 使用dreamhost空间实现MYSQL数据库备份方法

    2024-01-27 23:36:22
  • Python利用PsUtil实现实时监控系统状态

    2022-11-26 12:43:11
  • asp之家 网络编程 m.aspxhome.com