侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

django框架两个使用模板实例

框架(架构)  /  管理员 发布于 7年前   218

本文实例讲述了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 urlfrom django.contrib import adminfrom app01 import viewsurlpatterns = [  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,HttpResponsefrom 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="https:books/add" rel="external nofollow" rel="external nofollow" </script>'    hint='<script>alert("没有书籍,请添加书籍");window.location.href="https: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="https: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="https: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="https: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="https: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="https: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="https: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="https: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="https: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使用一对多和多对多关系建表之后的增删改查

-------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.titleclass 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,includefrom django.contrib import adminfrom app01 import viewsurlpatterns = [  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,redirectfrom .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="https: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="https: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="https:delbook/{{ book.pk }}/" rel="external nofollow" >删除</a>          <a href="https: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="https: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="https: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程序设计有所帮助。


  • 上一条:
    django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
    下一条:
    django框架基于queryset和双下划线的跨表查询操作详解
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Filament v3.1版本发布(0个评论)
    • docker + gitea搭建一个git服务器流程步骤(0个评论)
    • websocket的三种架构方式使用优缺点浅析(0个评论)
    • ubuntu20.4系统中宿主机安装nginx服务,docker容器中安装php8.2实现运行laravel10框架网站(0个评论)
    • phpstudy_pro(小皮面板)中安装最新php8.2.9版本流程步骤(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2018-05
    • 2020-02
    • 2020-03
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-11
    • 2021-03
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-08
    • 2023-08
    • 2023-10
    • 2023-12
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客