web开发第五课信息存储到数据库

修改urls.py

首先要把之前的url路由修改

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^student$', views.show_all_students),
    url(r'^showadd_project$',views.showadd_project),
]+ static("/s",document_root="./static")
然后把views.py中的studentTable删掉,因为不存储在内存中,而是存储在数据库中

# Create your views here.
from django.http import HttpResponse

studentTable = {
        'zhangchong':{
            'loginname':'zhangchong',
            'name':u'张冲',
            'age': 23,
        },
    'lisi':{
        'loginname':'lisi',
        'name':u'李四',
        'age': 25,
    },
    'xudandan':{
        'loginname':'xudandan',
        'name':u'',
        'age':23
    },
}
先增加数据,先把course实例化一个对象

def showadd_course(request):
    studentList =[]
    #如果接受的请求中有name,就需要添加课程信息到数据库中
    if 'name' in request.GET:
        name = request.GET['name']
        desc = request.GET['desc']
        displayidx = int(request.GET['displayidx'])
         #注意数据库里面添加记录的方法,是实例化Model,传入字段参数值
        #最后调用save
        course=Course(name=name,desc=desc,displayidx=displayidx)
        course.save()

先用Course类实例化一个对象,实例化的参数就是表里面的字段name,desc,displayidx产生一个实例对象project,然后对这个实例对象course调用save方法.

Django在数据库里面添加记录的方法一

实例化Model类,传入字段参数值

course=Course(name=name,desc=desc,displayidx=displayidx)
        course.save()
Model类就对应表,Model类的一个实例就对应表中的一条记录

表结构的定义就像类定义(表的字段就像类的属性)

表里面的一个记录就是类里面的一个实例,不需要执行sql语句,sql语句被底层给封装了,SQL语句是很底层的实现方式,面向对象是一种比较上层的方法的操作就实现了对数据库的操作

方法二

Course.objects.create(name=name,desc=desc,display_idx=displayidx)

显示数据库中已经存在的记录

获取所有记录

Course.objects.all( )

返回的是QuerySet类型的对象,很像一个list;QueryDict很像一个dict,get请求返回的

修改模板

{% for one in courseList %}
<tr>
<td>{{one.name}}</td>
<td>{{one.desc}}</td>
<td>{{one.displayidx}}</td>
</tr>
{% endfor %}
 get请求会带来安全问题

<form method='post'>
  <fieldset>
修改为post会遇到问题

CSRF - Cross Site Request Forgery 跨站点伪造请求

http://www.cnblogs.com/shytong/p/5308667.html (CSRF简介)

http://blog.csdn.net/ybdesire/article/details/48196843(Django的CSRF保护引起的403)

加入

from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def showadd_course(request):
    studentList =[]
    #如果接受的请求中有name,就需要添加课程信息到数据库中
    if 'name' in request.GET:

过滤查询filter

使用filter方法

courseList = Course.objects.all().filter(display_idx=1)

过滤条件的文档在https://docs.djangoproject.com/en/1.11/ref/models/querysets/#id4


#查询数据
Course.objects.all() #获取全部数据
Course.objects.all().values('name')#只取nameCourse.objects.all().values_list('id','user') #取出iduser,并生成一个表
#增加数据
Course.objects.create(name='xxx',desc='xxx',display_idx='xxx')
#course=Course(name='xxx',desc='xxx',display_idx='xxx')
course.save()
#删除数据
Course.objects.filter(name='xxx').delete()#删除name=xxx行数据
#改数据
Course.objects.filter(name='xxx').update(desc='asd')
#course=Course.objects.get(name='xxx')
course.desc = 'asd'
course.save()

详细见参考http://www.cnblogs.com/yangmv/p/5327477.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值