Python3.4+Django1.7+SQLite3实现增删改查

前2篇文章,散仙写了关于Django的入门安装,以及简单模拟数据库的MVC使用,那么本篇就来稍微深入下,来看看如何使用Django来实现一个增删改查的小例子: 

序列

名称

备注

1

win7

操作系统

2

开发工具

Pycharm

3

Python3.4

python版本

4

Django1.7

Django版本

5

SQLite

数据库

6

屌丝码农一枚

核心角色‍

通过本案例项目,能学到什么?  (1)表单post提交参数数据  (2)python对csrf的支持与应用  (3)增删改查的处理思路  (4)python的Api熟悉  (5)python里面重定向的使用  (6)模板文件的编写格式  (7)mvt模式的了解  (8)python隔行换色的实现  (9)python对象关系映射使用  先看几个案例的几个截图:  1,查询所有:  2,添加一条数据:  3,修改数据:  4,删除一条数据:  model里的代码: 

  1. from django.db import models      # Create your models here.         class Student(models.Model):       name=models.CharField(max_length=20)       age=models.IntegerField(max_length=3)         class Subject(models.Model):       student=models.ForeignKey(Student)       sub_name=models.CharField(max_length=20)       sub_num=models.IntegerField(default=0)

views里面的代码: 

  1. import builtins   from django.shortcuts import render,render_to_response   from django.http import HttpResponse,HttpResponseRedirect   from django.template.context import RequestContext      #包装csrf请求,避免django认为其实跨站攻击脚本   from django.views.decorators.csrf import csrf_exempt      import random   from.models import Student   # Create your views here.   from django.core.context_processors import csrf      def hello(request):       return HttpResponse("我是django的第一个例子!")         def myhtml(request):       return render_to_response('a.html',locals())         def bb(request):       return render(request,'bb.html')   #访问首页   def beginAdd(request):       return render_to_response('add.html')   #保存数据   @csrf_exempt   def add(request):      # c={}      id=request.POST['id']      name=request.POST['name']      age=request.POST['age']      st=Student()      if  len(id)  > 0 :          print("id不是null")          st.id=id;      st.age=age      st.name=name      st.save()      return HttpResponseRedirect("/q")      #查询所有   def query(request):       b=Student.objects.all()          #for  e in b:           #print(e.id,"   ",e.age,"   ",e.name)          return render_to_response('curd.html',{'data':b})   #显示一条数据   def showUid(request):       id=request.GET['id'];       bb=Student.objects.get(id=id)       return render_to_response('update.html',{'data':bb})   #删除数据   def delByID(request):       id=request.GET['id'];       bb=Student.objects.get(id=id)       bb.delete()       return HttpResponseRedirect("/q")      datas=[          {"id":"1","name":"华为"},       {"id":"2","name":"三星"},       {"id":"4","name":"Apple"},       {"id":"5","name":"中国"},       {"id":"6","name":"JAVA程序员"},       {"id":"7","name":"solr"},       {"id":"8","name":"hadoop编程"},       {"id":"9","name":"python"},      ]         def show(request):                 return render_to_response('data.html',{'datas':datas})

url里面的代码: 

  1. from django.conf.urls import patterns, include, url   from django.contrib import admin   #导入view定义的方法   from CurdWeb.views import hello,myhtml,bb,show,add,query,beginAdd,delByID,showUid      urlpatterns = patterns('',       # Examples:       # url(r'^$', 'Django项目.views.home', name='home'),       # url(r'^blog/', include('blog.urls')),          url(r'^admin/', include(admin.site.urls)),       #基于hellword的绑定       url(r'^hello/$',hello),          url(r'^myhtml/$',myhtml),       url(r'^cc/$',bb),       #url映射到view层,并获取展现数据       url(r'^show$',show),       #添加数据映射       url(r'^add$',add),       #查询所有数据的映射       url(r'^q$',query),       #访问添加首页的html       url(r'^index.html$',beginAdd),       #删除用户根据id       url(r'delete$',delByID),       #更新的方法,根据id       url(r'showid$',showUid)         )

html页面 

<!DOCTYPE html>  
<html>  
<head lang="en">  
    <meta charset="UTF-8">  
    <title>添加数据,提交form表单</title>  
</head>  
<body>  
  
  
  
  
<form action="/add" method="post">  
          <input name="id" type="hidden" value="" ><br/>  
请输入名字<input name="name" type="text" ><br/>  
请输入年龄<input name="age" type="text" ><br/>  
    <input type="submit" value="提交" >  
</form>  
  
  
</body>  
</html>
  1. <!DOCTYPE html>   <html>   <head lang="en">       <meta charset="UTF-8">       <title>数据展示平台</title>   </head>   <style>   body{       text-align: center;   }   #tt{        margin: 0 auto;   }   </style>   <body>      <table id="tt" border="2">   <tr> <td>用户编号</td>  <td>用户姓名</td> <td>用户年龄</td>   <td>操作</td>     </tr>   {%  for d in data %}   <tr {% if forloop.counter|divisibleby:"2"  %} style="background: gainsboro" {% else %} style="background: aquamarine"  {% endif %}  >  <td>{{ d.id }}</td> <td>{{ d.name }}</td> <td>{{ d.age }}</td><td>[url=/delete?id={{ d.id }}]删除[/url]  [url=/index.html]添加[/url]  [url=/showid?id={{ d.id }}]修改[/url] </td> </tr>   {% endfor %}      </table>   </body>   </html>
<!DOCTYPE html>  
<html>  
<head lang="en">  
    <meta charset="UTF-8">  
    <title>动态展示学生信息数据</title>  
</head>  
<body>  
<table style="color: green" border="2">  
<td>编号</td><td>名字</td>  
{% for m in datas %}  
   <tr>  
   <td>{{ m.id }}</td><td>{{ m.name }}</td>  
   </tr>  
{% endfor %}  
</table>  
</body>  
</html>
<!DOCTYPE html>  
<html>  
<head lang="en">  
    <meta charset="UTF-8">  
    <title>修改个人信息</title>  
</head>  
<body>  
  
  
<form action="/add" method="post" >  
        <input type="hidden" name="id"  value="{{ data.id }}" >  
    名字:<input name="name" type="text" value="{{ data.name  }}"><br/>  
    年龄:<input name="age" type="text" value="{{ data.age }}"><br/>  
          <input type="submit" value="保存"/>  
  
  
</form>  
  
</body>  
</html>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏比原链

剥开比原看代码12:比原是如何通过/create-account-receiver创建地址的?

Gitee地址:https://gitee.com/BytomBlockchain/bytom

17010
来自专栏Java Web

Java I/O不迷茫,一文为你导航!

学习过计算机相关课程的童鞋应该都知道,I/O 即输入Input/ 输出Output的缩写,最容易让人联想到的就是屏幕这样的输出设备以及键盘鼠标这一类的输入设备,...

13020
来自专栏雪胖纸的玩蛇日常

Vue+Django2.0 REST framework 打造前后端分离的生鲜电商项目(五)商品列表页

1.1K60
来自专栏编程思想之路

WiFiAp探究实录--功能实现与源码分析

Android虐我千百遍,我待Android如初恋。 ——————编辑于2017-08-02——————— wifi热点说的是wifiAp相...

1.8K90
来自专栏北京马哥教育

MongoDB多纬度监控方法详解

一、mongostat工具方法 mongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如...

48950
来自专栏安恒网络空间安全讲武堂

堆利用之double-free

38040
来自专栏菩提树下的杨过

rpc框架之 thrift 学习 1 - 安装 及 hello world

thrift是一个facebook开源的高效RPC框架,其主要特点是跨语言及二进制高效传输(当然,除了二进制,也支持json等常用序列化机制),官网地址:htt...

38290
来自专栏腾讯数据库技术

比ls快8倍?百万级文件遍历的奇技淫巧

1.4K40
来自专栏草根专栏

用ASP.NET Core 2.1 建立规范的 REST API -- HATEOAS

本文所需的一些预备知识可以看这里: http://www.cnblogs.com/cgzl/p/9010978.html 和 http://www.cnblog...

17640
来自专栏王磊的博客

Java核心(三)并发中的线程同步与锁

乐观锁、悲观锁、公平锁、自旋锁、偏向锁、轻量级锁、重量级锁、锁膨胀...难理解?不存的!来,话不多说,带你飙车。

13720

扫码关注云+社区

领取腾讯云代金券