zoukankan      html  css  js  c++  java
  • 第十七篇:django基础(二)

    本篇内容

      简单图书crm系统

    编写views

    views:作为MVC中的C,接收用户的输入,调用数据库Model层和业务逻辑Model层,处理后将处理结果渲染到V层中去。

    app01/views.py:

    from django.shortcuts import render, HttpResponse, redirect
    
    # Create your views here.
    
    from app01 import models
    
    def index(request):
        bookList = models.Book.objects.all()
        return render(request, "app01/index.html", {"bookList": bookList})
    
    def add(request):
        if request.method == "POST":
            title = request.POST.get("title")
            pubdate = request.POST.get("pubdate")
            price = request.POST.get("price")
            publish = request.POST.get("publish")
            models.Book.objects.create(title=title, pubDate=pubdate, price=price, publish=publish)
            return redirect("/index")
        return render(request, "app01/add.html")
    
    def delbook(request, id):
        models.Book.objects.filter(id=id).delete()
        return redirect("/index")
    
    def editbook(request, id):
        if request.method == "POST":
            title = request.POST.get("title")
            pubdate = request.POST.get("pubdate")
            price = request.POST.get("price")
            publish = request.POST.get("publish")
            models.Book.objects.filter(id=id).update(title=title, pubDate=pubdate, price=price, publish=publish)
            return redirect("/index/")
        edit_book = models.Book.objects.filter(id=id)[0]
        return render(request, "app01/edit.html", {"edit_book": edit_book})
    

    编写urls

    urls,程序的入口,支持正则匹配访问url,将访问url映射到views中的具体某个函数中。

    为了能调用到上面这个views,我们需要将views.index函数映射到URL中。

    我们可以创建一个urls.py 在App目录下。

    app01/urls.py:

    """crm URL Configuration
    
    The `urlpatterns` list routes URLs to views. For more information please see:
        https://docs.djangoproject.com/en/1.11/topics/http/urls/
    Examples:
    Function views
        1. Add an import:  from my_app import views
        2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
    Class-based views
        1. Add an import:  from other_app.views import Home
        2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
    Including another URLconf
        1. Import the include() function: from django.conf.urls import url, include
        2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
    """
    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/', views.index),
        url(r'^add/', views.add),
        url(r'^del/(d+)', views.delbook),
        url(r'^edit/(d+)', views.editbook),
    ]
    

    编写models

    models与数据库操作相关,是django处理数据库的一个特色之处,它包含你的数据库基本字段与数据。通过一系列封装的api可以直接操作数据库。当然,也支持原生sql。

    既然models与数据库相关,那么首先需要配置数据库

    1、数据库设置,mysite/settings.py:

    这里默认使用内置的sqlite3,配置如下:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    

    app01/models.py:

    from django.db import models
    
    # Create your models here.
    
    class Book(models.Model):
        id = models.AutoField(primary_key=True)
        title = models.CharField(max_length=32)
        pubDate = models.DateField()
        price = models.DecimalField(max_digits=6, decimal_places=2)
        publish = models.CharField(max_length=32)
    

     控制台分别运行:

    $ python manage.py makemigrations
    $ python manage.py migrate
    

    编写html

    app01/templates/index:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>主页</title>
        <link rel="stylesheet" href="/static/bootstrap-3.3.7/dist/css/bootstrap.css">
        <style>
            .container{
                margin-top: 100px;
            }
        </style>
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-md-8 col-md-offset-2">
                    <a href="/add/"><button class="btn btn-primary">添加</button></a>
                    <table class="table table-hover">
                        <tr>
                            <th>编号</th>
                            <th>书名</th>
                            <th>出版日期</th>
                            <th>价格</th>
                            <th>出版社</th>
                            <th>操作</th>
                        </tr>
                            {% for book_obj in bookList %}
                                <tr>
                                    <td>{{ forloop.counter }}</td>
                                    <td>{{ book_obj.title }}</td>
                                    <td>{{ book_obj.pubDate | date:"Y-m-d"}}</td>
                                    <td>{{ book_obj.price }}</td>
                                    <td>{{ book_obj.publish }}</td>
                                    <td>
                                        <a href="/edit/{{ book_obj.id }}"><button class="btn btn-info">编辑</button></a>
                                        <a href="/del/{{ book_obj.id }}"><button class="btn btn-danger">删除</button></a>
                                    </td>
                                </tr>
                            {% endfor %}
                    </table>
                </div>
            </div>
        </div>
    </body>
    </html>
    

     app01/templates/add:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>添加页面</title>
    </head>
    <body>
        <form action="/add/" method="post">
            <p>书名:<input type="text" name="title"></p>
            <p>出版日期:<input type="date" name="pubdate"></p>
            <p>价格:<input type="text" name="price"></p>
            <p>出版社:<input type="text" name="publish"></p>
            <input type="submit">
        </form>
    </body>
    </html>
    

      app01/templates/edit:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>编辑页面</title>
    </head>
    <body>
        <form action="/edit/{{ edit_book.id }}" method="post">
            <p>书名:<input type="text" name="title" value="{{ edit_book.title }}"></p>
            <p>出版日期:<input type="date" name="pubdate" value="{{ edit_book.pubDate|date:'Y-m-d' }}"></p>
            <p>价格:<input type="text" name="price" value="{{ edit_book.price }}"></p>
            <p>出版社:<input type="text" name="publish" value="{{ edit_book.publish }}"></p>
            <input type="submit">
        </form>
    </body>
    </html>
    
  • 相关阅读:
    通过通过url routing解决UIViewController跳转依赖
    vs2010下配置CUDA出现kernel launch failed问题,内核无效
    ganglia监控自己定义metric实践
    faq
    Android进阶图片处理之三级缓存方案
    操作系统 内存管理(一)
    rocketmq消费队列代码
    网页固定側栏的做法
    web爬虫之登录google paly 商店
    C之内存地址
  • 原文地址:https://www.cnblogs.com/00doudou00/p/7810118.html
Copyright © 2011-2022 走看看