Django 自带的ORM增删改查
通过Django来对数据库进行增删改查
1 首先创建类,在app应用程序里面的model模块里面创建类,写好数据库信息,方便我们待会初始化:
2 创建在django项目里面的settings里面添加app程序()在settings里面的INSTALLED_APPS里面)
3 python manage.py makemigrations
4 python manage.py migrate
django 常用命令:
django :
第一条命令是创建项目名,第二条是创建app,第三个同步(创建)数据库
python3 manage.py startproject project_name
python3 manage.py startapp app_name
python3 manage.py syncdb
拿models里面的一个类举例:
我们先看models创建一个数据库的方法:
class WebGroup(models.Model): name = models.CharField(max_length=64) brief = models.CharField(max_length=255,blank=True,null=True) owner = models.ForeignKey(UserProfile) admins = models.ManyToManyField(UserProfile,blank=True,related_name='group_admins') members = models.ManyToManyField(UserProfile,blank=True,related_name='group_members') max_members = models.IntegerField(default=200) def __str__(self): return self.name
同步数据库
python manage.py makemigrations python manage.py migrate 本人使用的是django1.9.5版本 2.创建超级管理员 python manage.py createsuperuser 3.运行django python manage.py runserver 8000
1 增加数据
我们在views里面随便定义一个方法名,然后下如以下代码 ,写入以下代码:
if request.method == "POST": input_em = request.POST['em'] # em 和 pwd都是和form表单里面的一一对应 input_pw = request.POST['pwd'] print(input_pw,input_em) models.UserInfo.objects.create(email=input_em, pwd=input_pw) #models调用的是先前创建好的数据库
当出现这个报错提示的时候,我们应该在html页面上的form表单里面添加这行内容: {% csrf_token %}
<form action="/index/" method="post"> {% csrf_token %} <input type="text" name="em"/> <input type="text" name="pwd"/> <input type="submit" value="添加"/> </form>
2 删除数据
models.UserInfo.objects.filter(email=input_em).delete()
3 更改数据:
models.UserInfo.objects.filter(email=input_em).update(pwd='nihao')
4 查看数据:
我们需要在HTML页面里嵌套jinja2的代码,下面代码能够在表单里面根据后台数据库的内容来展示,代码如下:
# 前端代码的jinja2语法如下 {% for line in user_info_list %} # user_info_list 实际上就是从models里面获取的对象。 <tr> <td>{{ line.email }}</td> # 每个遍历出来的对象都有emmail这个属性,因为我们在定义这个表的时候就定义了email字段 <td>{{ line.pwd }}</td> </tr> {% endfor %}
后端django,views里面的方法
def index(request): # 数据库获取数据,数据和HTML渲染 from app01 import models user_info_list = models.UserInfo.objects.all() return render(request,'index.html',{'user_info_list':user_info_list})