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请求适用于:大段数据,隐私数据和文件上传