zoukankan      html  css  js  c++  java
  • 60 Django项目 单表(出版社)的增删改查 __str__方法及格式化输出 的两个方法

    要内容:

    1 . 常用的orm查询语句

      查询:  类名.objects.all()                                       # 查询全部,返回一个列表

         类名.objects.filter()                                   # 根据条件查询,返回一个列表

         类名.objects.get()                                     # 根据条件查询, 获得一个对象

      增加:  类名. objects.create(name='')                   # 创建一个对象,返回的就是刚才创建的对象                       

      删除:  类名.objects.filter(id='').delete()                # 删除

      修改:  obj = 类名.objects.filter(id='')[0]

       或者使用get:  get获取一个具体的对象

        obj = 类名.objects.get(id='')

       obj.name = '新值'                                      #修改对象的属性(修改数据行某个字段的值)

       obj.save()                                                  #把修改同步到数据库             

    def edit_press(request):
        if request.method == 'POST':
            # 1取出用户编辑之后的数据
            edit_id = request.POST.get('id')
            new_name = request.POST.get('name')
            # 2 找出原先的数据
            edit_press_obj = Press.objects.filter(id=edit_id)[0]         #filter取出的是列表, 取索引是取出对象
            # edit_press_obj = Press.objects.get(id=edit_id)             # get直接取出对象
            print(edit_press_obj)
            # 3 用新的名字替换原来的名字
            edit_press_obj.name = new_name
            # !!!!!!!!!!!4 将修改同步到数据库
            edit_press_obj.save()
            # 5 跳转到出版社表
            return redirect('/press_list/')
        # 获取需要编辑的出版社的id
        edit_id = request.GET.get('id')
        # 找到数据库中对应的内容
        ret = Press.objects.get(id=edit_id)
        return render(request,'edit_press.html', {'press_obj':ret})
    

    2  模板语言:

      a : 跟变量相关的{{变量名}}

      b : 跟逻辑相关{% for i in 变量名%}

          {{forloop.counter}}     # 记录循环了多少次, 从1开始

          {{forloop.counter0}}   #记录循环了多少次, 从0开始

          {% endfor%}

        在html中的应用(具体见60天的Django项目press)

       <tbody>
            {% for i in result %}
                <tr>
                <td>{{ forloop.counter }}</td>
                <td>{{ i.id }}</td>
                <td>{{ i.name }}</td>
                <td>
                    <a href="/delete_press/?id={{ i.id }}">删除</a>
                    <a href="/edit_press/?id={{ i.id }}">编辑</a>
                </td>
    
                </tr>
            {% endfor %}
        </tbody> 

    在.py文件中的应用

    def press_list(request):
    
        ret = Press.objects.all()
        print(ret)
        return render(request, 'press_list.html', {'result': ret})
    

    3  __str方法以及格式化输出的两种方法

    class Student:
        def __str__(self):
            # return '%s %s' %(self.name, self.age)      #格式化输出的两种方法
            return '{}{}'.format(self.name, self.age)
        def __init__(self, name,age):
            self.name = name
            self.age = age
    stu = Student('小爱',13)
    print(stu)   #相当于执行了__str方法
    ret = stu.name
    print(ret)
    

      

     

  • 相关阅读:
    lamp----6 实现虚拟主机ssl安全
    lamp-----5 apache虚拟主机实现,发布多个独立站点
    lamp----4 虚拟目录
    lamp----3 访问控制
    Apache配置反向代理、负载均衡和集群(mod_proxy方式)
    lamp-------3 userdir发布用户站点
    lamp------2 发布站点
    [转]KDE/QT与GNOME/GTK比较
    为什么会有文字聊天
    [转]gdb结合coredump定位崩溃进程
  • 原文地址:https://www.cnblogs.com/gyh412724/p/9715368.html
Copyright © 2011-2022 走看看