1. 需求整理
2. 表结构设计
部分建表语句
use django;
show tables;
create table class(id int primary key auto_increment, title varchar(100));
desc class;
insert into class values(1,'class1');
insert into class values(2,'class1');
select * from class;
2. pycharm项目创建
2.1 环境配置
三步曲:
- 注释掉 # ‘django.middleware.csrf.CsrfViewMiddleware’;
- TEMPLATES 配置,例如:‘DIRS’: [BASE_DIR / ‘templates’]
- STATICFILES_DIRS配置:STATICFILES_DIRS = (
os.path.join(BASE_DIR, ‘static’),
)
2.2 逻辑代码
为了方便整理,将逻辑代码全放入到新建文件夹app01中,再从中导入所需代码即可。
url.py就变的简洁如下:
# from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
# path('admin/', admin.site.urls),
path('classes/', views.classes),
path('add_class/', views.add_class),
]
先开始编写第一个逻辑代码 views.py
from django.shortcuts import render,redirect
import pymysql
def classes(request):
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='psy19941124', db='django', charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute("select id,title from class")
class_list = cursor.fetchall()
# conn.commit()
cursor.close()
conn.close()
return render(request, 'classes.html', {'class_list': class_list})
class.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>班级列表</h1>
<div>
<!-- 引用外部的样式文件 -->
<a href="/add_class/">添加</a>
</div>
<table>
<thead>
<tr>
<th>ID</th>
<th>班级名称</th>
</tr>
</thead>
<tbody>
{% for row in class_list %}
<tr>
<td>{{ row.id }}</td>
<td>{{ row.title }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
现在来实现点击‘添加’即可往数据库添加新的数据
views.py
def add_class(request):
if request.method == 'GET':
return render(request, 'add_class.html')
else:
print(request.POST)
v = request.POST.get('title')
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1', charset='utf8')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# cursor.execute("insert into class(title) values(%s)", v)
cursor.execute("insert into class(title) values(%s)", [v, ])
conn.commit()
cursor.close()
conn.close()
return redirect('/classes/')
add_class.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>添加班级</h1>
<form method="post" action="/add_class/">
<p>班级名称: <input type="text" name="title"/></p>
<input type="submit" value="提交"/>
</form>
</body>
</html>
点击‘添加’,输入‘class2’效果
参考文献
Python开发【第十九篇】:Python操作MySQL - 武沛齐 - 博客园 https://www.cnblogs.com/wupeiqi/articles/5713330.html