Django 自带的ORM增删改查

Posted 温柔易淡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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})

 




以上是关于Django 自带的ORM增删改查的主要内容,如果未能解决你的问题,请参考以下文章

SQLAlchemy增删改查 一对多 多对多

Django框架—— orm增删改查Django生命周期

12.Django-ORM增删改查

备战Django之ORM模型(增删改查)

django orm 单表增删改查

Django框架-- orm增删改查Django生命周期