• day89-django-学员管理之班级列表的增删改查


    1、创建django项目之后,settings设置:

      1.1 注释掉# 'django.middleware.csrf.CsrfViewMiddleware',

      1.2 静态文件设置:添加static文件夹

          STATIC_URL = '/static/'

          STATICFILES_DIRS = (  os.path.join(BASE_DIR,'static'),  )  #逗号不能漏,这是元祖

    2、urls设置:

      


    3.views.py
    from django.shortcuts import render,redirect
    import pymysql

    #班级列表
    def classes(request):
    conn = pymysql.connect(
    host='localhost',
    port=3306,
    user='root',
    password='123',
    database='django_test',
    charset='utf8'
    )
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('select id,title from classes')
    result = cursor.fetchall()#获取数据库数据,[{k1:v1},{k2:v2},{k3:v3}]
    cursor.close()
    conn.close()

    return render(request,'classes.html',{'result':result})#html的特殊字符result跟获取到的数据库的数据result进行替换


    #增加班级名称
    def add_class(request):
    if request.method == 'GET':
    return render(request,'add_class.html')
    else:
    v = request.POST.get('title')
    conn = pymysql.connect(
    host='localhost',
    port=3306,
    user='root',
    password='123',
    database='django_test',
    charset='utf8'
    )
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('insert into classes(title) values(%s)',[v])
    conn.commit()
    # result = cursor.fetchall()这里结果是空元祖,无法获取数据,因为前面已经使用
    # 过一次fetchall,数据取完就没有了,所以前面要把数据放在变量里面方便操作。
    cursor.close()
    conn.close()
    # 直接跳转到班级列表页面。
    return redirect('/classes/')#浏览器收到这个url之后,重定向(重新向服务器发一次请求),
    #服务器执行classes函数返回班级列表页面。

    #删除班级名称
    def del_class(request):
    nid = request.GET.get('nid')
    conn = pymysql.connect(
    host='localhost',
    port=3306,
    user='root',
    password='123',
    database='django_test',
    charset='utf8'
    )
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('delete from classes where id=%s',[nid])
    conn.commit()
    cursor.close()
    conn.close()

    return redirect('/classes/')

    #编辑班级名称:
    def edit_class(request):
    if request.method == 'GET':
    #先获取数据库的对应行的班级名称(字典),然后替换模板的特殊字符,最后返回给浏览器,
    # 浏览器就有默认的班级名称。
    nid = request.GET.get('nid')
    conn = pymysql.connect(
    host='localhost',
    port=3306,
    user='root',
    password='123',
    database='django_test',
    charset='utf8'
    )
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('select id,title from classes where id=%s', [nid])
    result = cursor.fetchone()#fetchone获取的是字典,{'id': 1, 'title': '全栈1期'}
    print(result)
    cursor.close()
    conn.close()
    #点编辑,弹出另外一个页面,用于修改班级名称
    return render(request,'edit_class.html',{'result':result})

    else:
    nid = request.GET.get('nid')
    title = request.POST.get('title')
    conn = pymysql.connect(
    host='localhost',
    port=3306,
    user='root',
    password='123',
    database='django_test',
    charset='utf8'
    )
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('update classes set title=%s where id=%s', [title,nid])
    conn.commit()
    cursor.close()
    conn.close()

    return redirect('/classes/')

    
    
    4.classes.html
    <body>
    <h1>班级列表</h1>
    <a href="/add_class/">添加</a>
    <table>
    <thead>
    <tr>
    <th>ID</th>
    <th>班级名称</th>
    <th>操作</th>
    </tr>
    </thead>
    <tbody>
    {% for row in result %}
    <tr>
    <td>{{ row.id }}</td>
    <td>{{ row.title }}</td>
    <td><a href="/edit_class/?nid={{ row.id }}">编辑</a>
    |
    <a href="/del_class/?nid={{ row.id }}">删除</a>
    </td>
    </tr>
    {% endfor %}
    </tbody>
    </table>
    </body>
    5.add_class.html
    <body>
    <h1>添加班级</h1>
    <!-- 点提交,页面url就变成add_class,跟a标签的"添加"的url一样,服务器对应的add_class函数
    会做判断,当添加时就是GET,提交时就是POST-->
    <!-- request.POST这个字典的key就是name也就是title,value是输入的值 -->
    <form method="POST" action="/add_class/">
    <p>班级名称:<input type="text" name="title"></p>
    <p><input type="submit" value="提交"></p>
    </form>
    </body>

    6.edit_class.html
    <body>
    <h1>编辑班级</h1>
    <!-- ?nid={{ result.id }}这是字典,服务器通过request.GET.get(nid)获取 {{ result.id }}-->
    <form method="POST" action="/edit_class/?nid={{ result.id }}">
    <p>班级名称:<input type="text" name="title" value="{{ result.title }}"></p>
    <p><input type="submit" value="提交"></p>
    </form>
    </body>

    
    

    
    


  • 相关阅读:
    升级ios 不能连原本的xcode /xcode不能抓帧/换xcode版本 build fail
    BlackBerry Key2 键盘扩展
    再议C风格变量声明
    怎样去除SVN中的某个版本之前的所有版本
    mysql 常用基础语句
    乱码问题
    sql server
    MySQL查询今天、昨天、上周、近30天、去年等的数据的方法
    java 时间转换
    sql server 日期
  • 原文地址:https://www.cnblogs.com/python-daxiong/p/12622992.html
Copyright © 2020-2023  润新知