zoukankan      html  css  js  c++  java
  • django之两个使用模板的例子

    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,)
    models.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),
    ]
    urls.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"</script>'
            hint='<script>alert("没有书籍,请添加书籍");window.location.href="/books/add/"</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/"</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"</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/"</script>'
            return HttpResponse(hint)
        else:
            hint='<script>alert("删除失败");window.location.href="/index/"</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/"</script>'
                return HttpResponse(hint)  # js跳转
            else:  # 返回为0
                hint = '<script>alert("修改失败");window.location.href="/index/"</script>'
                return HttpResponse(hint)  # js跳转
    
        book=models.Book.objects.get(id=id)
        return render(request,"modify.html",{"book":book})
    views.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>
                         </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 %}
    index.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 %}
    add.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">
        <style>
            * {
                margin: 0;
                padding: 0;
            }
    
            .header {
                 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/">查看书籍</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/">添加书籍</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/">管理书籍</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>
    base.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>
                             <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 }}" >
                                      <button type="button" class="btn btn-danger" data-toggle="modal" id="modelBtn">删除</button>
                                  </a>
                              </td>
                              <td>
                                    <a href="/books/modify/{{ book.id }}">
                                        <button type="button" class="btn btn-success" data-toggle="modal">编辑</button>
                                    </a>
                              </td>
                          </tr>
                          {% endfor %}
    
                    </tbody>
                </table>
    
    {% endblock content %}
    manage.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 %}
    modify.py

    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">
    </head>
    <body>
    <div class="container" style="margin-top:100px">
        <div class="row">
            <div class="col-md-6 col-md-offset-3">
                <a href="/addbook/"><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 }}/">删除</a>
                        <a href="/editbook/{{ book.pk }}/">编辑</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">
    </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">
    </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>
  • 相关阅读:
    关于windows线程的各种状态
    《深入理解计算机系统》(第二版)第二章练习题3
    《深入理解计算机系统》(第二版)第二章中的一练习题2
    Linux进程/线程模型
    用户进程中执行的操作系统
    关于操作系统模型
    《深入理解计算机系统》(第二版)第二章中的一题目
    并发问题互斥(Dekker算法和Peterson算法)
    概率问题:星期二出生的孩子
    Yii添加扩展加载Ckeditor 4.0以上版本
  • 原文地址:https://www.cnblogs.com/mmyy-blog/p/9883947.html
Copyright © 2011-2022 走看看