Django基于ORM数据库配置

1.自己手动创建数据库

  create database 数据库名

2.在Django项目中配置数据库相关配置 setting文件下

 1 DATABASES = {
 2     'default': {
 3         'ENGINE': 'django.db.backends.mysql',    #连接数据库的类型
 4         'HOST':'127.0.0.1',                      #连接数据库地址
 5         'PORT':3306,                             #端口号
 6         'NAME':'manage',                         #数据库名
 7         'USER':'kevin',                          #数据库用户名
 8         'PASSWORD':'12121',                      #数据库密码
 9     }
10 }

3.告诉diango用pymysql去代替mysqlDB,去连接数据库 

   在项目的_init_.py文件里配置 非APP下的_init_.py

1 import pymysql
2 #让Django用pymysql来代替mysqlDB
3 pymysql.install_as_MySQLdb()

4.在APP应用里的model文件定义class(映射数据库表名),类必须继承models.Model

   类的对象对应表的一条记录,属性对应一列记录;

1 class UserInfo(models.Model):
2     id=models.AutoField(primary_key=True) #自增类型主键
3     name=models.CharField(null=False,max_length=20) #不为空 char长度为20

5.执行命令语句去创建数据表

   >>>python manage.py makemigrations

   >>>python manage.py migrate

需要注意:若是数据库表已经有数据,要添加属性列则需要指定字段列是否为空,不为空则必须给默认值,否则无法添加新的数据列字段

******************************************************************************

实现数据库内容在HTML页面:

1.找对应关系 在web项目的urls 文件里添加要访问的连接和对应的函数

1 url(r'^user_list/',views.user_list),

2.在appfind应用程序的views文件夹下实现user_list函数,函数里面会去取后台数据库表的值,通过类去实现获取全部数据

3.要在HTML页面显示数据则需要用到render页面渲染,指定要渲染的页面,把数据以字典形式传过去。

1 def user_list(request):
2     data=models.UserInfo.objects.all()
3     return render(request,'user_list.html',{'user_list':data})

4.在web项目的templates文件夹写入user_list.html文件

5.文件中涉及到多条表记录时可以使用Django内置的模板for循环取值

1 {% for user in user_list %}
2              <tr>
3                <td>{{ user.id }}</td>
4                <td>{{ user.name }}</td>
5                <td>{{ user.age }}</td>
6             </tr>
7         {% endfor %}

 6.往数据表里插入数据:

主要是用到models.UserInfo.objects.create(key=value)

1 def add_user(request):
2     if request.method=='POST':
3         user=request.POST.get('username',None)
4         password=request.POST.get('password',None)
5         models.UserInfo.objects.create(name=user,psd=password)
6 
7         return  redirect('/user_list/')
8 
9     return  render(request,'add_user.html')

 7.按条件删除数据表记录:

1 def delete_press(request):
2     gid=request.GET.get('id',None)
3     if gid:
4         models.Press.objects.all().get(id=gid).delete()
5     else:
6         return HttpResponse('遇到了未知错误!')
7     return redirect('/press/')

GET请求,按id进行检索,用filter过滤也能实现get的效果,但是如果检索的条件数据库查不到,它不会异常处理。

8.按id修改数据记录:

 1 def edit_press(request):
 2     if request.method=='POST':
 3         n_press=request.POST.get('press_name')
 4         n_id = request.POST.get('num')
 5         n_obj=models.Press.objects.get(id=n_id)
 6         n_obj.name=n_press  #给筛选到的对象的属性重新赋值   就是更新字段值
 7         n_obj.save()
 8         return  redirect('/press/')
 9 
10     eid=request.GET.get('id',None)
11     if eid:
12         pre_obj= models.Press.objects.all().get(id=eid)
13         return render(request,'edit_press.html',{'press':pre_obj})
14     else:
15         return  HttpResponse('编辑的出版社不存在!')

修改完数据后一定要将数据对象重新save() 保存一下

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

通常GET链接的构成由两部分组成:

路径和请求参数,中间以?进行区分

例如 :127.0.0.0 /delete_press/?id=5

GET请求通常适用于:传参数链接a标签

POST请求适用于:大段数据,隐私数据文件上传

posted @ 2018-08-26 10:04  青红*皂了个白  阅读(189)  评论(0)    收藏  举报