Loading

python/Django(增、删、改、查)操作

python/Django(增、删、改、查)操作

我们要通过pycharm中的Django模块连接MySQL数据库进行对数据的操作。

一、创建Django项目(每创建一个项目都要进行以下设置)

1、如图所示,创建一个Project

 

2、红色区域是创建的项目名称,蓝色区域是创建目录

 

 3、如上图,把设置中这个注释掉

 

4、在设置文件中设置HTML文件夹路径

5、设置完文件夹路径,创建一个文件夹

二、连接数据库进行操作

建议:创建一个文件夹存放python代码,最后导入到urls.py文件中,如图:

在urls.py文件中设置url和相应的函数:

1 urlpatterns = [
2     # url(r'^admin/', admin.site.urls),
3     url(r'^classes/', stter.classes),
4     url(r'^add_class/', stter.add_class),
5     url(r'^del_class/', stter.del_class),
6     url(r'^update_class/', stter.update_class),
7 ]

查看数据库class表的内容:

from django.shortcuts import render,redirect
##导入django模块下的返回方式和跳转模块
import pymysql
##导入pymysql模块
def classes(request):     ##定义查看数据库函数
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', database='lian', charset='utf8')
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute('select * from class')
    class_list = cursor.fetchall()
    cursor.close()
    conn.close()
    return render(request,'classes.html',{'class_list':class_list})   
  返回给用户(经过classes.html和用户浏览器渲染内容){class_list}是传值到html中使用
------------------------------------------------------------------------
"D:\pycharm\PyCharm 2017.1\bin\runnerw.exe" D:\python3.6\python.exe E:/s4day65/manage.py runserver 8001
Performing system checks...

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
June 15, 2017 - 17:08:15
Django version 1.11.2, using settings 's4day65.settings'
Starting development server at http://127.0.0.1:8001/
Quit the server with CTRL-BREAK.
===============运行正常================

查看HTML代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 <h1>班级列表</h1>
 9 <div>
10     <a href="/add_class/">添加</a>
11 </div>
12 <table>
13     <thead>
14     <tr>
15         <th>ID</th>
16         <th>班级名称</th>
17         <th>操作</th>
18     </tr>
19     </thead>
20 
21 {% for row in class_list%}     for 循环
22     <tr>
23         <td>{{ row.cid }}</td>
24         <td>{{ row.cname }}</td>
25         <td>
26             <a href="/update_class/?nid={{ row.cid }}">编辑</a>
27             |
28             <a href="/del_class/?nid={{ row.cid }}">删除</a>
29         </td>
30     </tr>
31 {% endfor %}      结束for循环  (开始结束一定要共存)
32 </table>
33 </body>
34 </html>

运行效果:

添加:

 1 def add_class(request):   ##定义添加数据库函数
 2     if request.method == 'GET':
 3         return render(request,'add_class.html')
 4     else:
 5         print(request.POST)
 6         v=request.POST.get('cname')
 7         conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', database='lian', charset='utf8')
 8         cursor = conn.cursor()
 9         cursor.execute("insert into class(cname) VALUES(%s)",[v,])
10         conn.commit()
11         cursor.close()
12         conn.close()
13         return redirect('/classes/')
14 ---------------------------------------------------------------
15 Performing system checks...
16 
17 System check identified no issues (0 silenced).
18 
19 You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
20 Run 'python manage.py migrate' to apply them.
21 June 15, 2017 - 17:08:15
22 Django version 1.11.2, using settings 's4day65.settings'
23 Starting development server at http://127.0.0.1:8001/
24 Quit the server with CTRL-BREAK.
25 [15/Jun/2017 17:10:00] "GET /classes/ HTTP/1.1" 200 1396
26 ===============================

添加的HTML代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 <h1>添加班级</h1>
 9 <form method="POST" action="/add_class/">
10     <p>班级名称:<input type="text" name="cname"></p>
11     <input type="submit" value="提交">
12 </form>
13 </body>
14 </html>

运行结果:

 

删除:

1 def del_class(request):         ##定义删除数据库函数
2     nid=request.GET.get('nid')
3     conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', database='lian', charset='utf8')
4     cursor = conn.cursor()
5     cursor.execute("delete from class WHERE cid=%s",[nid,])
6     conn.commit()
7     cursor.close()
8     conn.close()
9     return redirect('/classes/')

运行结果:

 修改:

 1 def update_class(request):
 2     if request.method =='GET':
 3         nid = request.GET.get('nid')
 4         # name=request.POST.get('cname')
 5         conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', database='lian', charset='utf8')
 6         cursor = conn.cursor()
 7         cursor.execute("select class.cid,class.cname from class where cid=%s", [nid,])
 8         ste = cursor.fetchone()
 9         return render(request, 'update_class.html', {'ste': ste})
10     else:
11         id=request.GET.get('nid')
12         name=request.POST.get('cname')
13         conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', database='lian', charset='utf8')
14         cursor = conn.cursor()
15         cursor.execute("update class set cname=%s where cid = %s",[name,id,])
16         conn.commit()
17         cursor.close()
18         conn.close()
19         return redirect('/classes/')

修改HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>班级修改</h1>
    <form method="POST" action="/update_class/?nid={{ ste.0 }}">
        <p>班级名称:<input type="text" name="cname" value="{{ ste.1 }}"></p>
        <input type="submit" value="提交">
        {#    </form>#}
        {#    {% for row in ste %}#}
        {#    <a>{{ row }}</a>#}
        {#    {% endfor %}#}
    </form>
</body>
</html>

运行效果:

 

posted @ 2017-06-15 17:28  Meet~  阅读(2401)  评论(1编辑  收藏  举报