django與mysql實現簡單的增刪查改
阿新 • • 發佈:2018-11-04
模型定義
from django.db import models class Grades(models.Model): g_name = models.CharField(max_length=20) create_date = models.DateTimeField() girl_num = models.IntegerField() boy_num = models.IntegerField() isDelete = models.BooleanField(default=False) def __str__(self): return self.g_name class Meta: db_table = 'grades' class Students(models.Model): s_name = models.CharField(max_length=20) s_gender = models.BooleanField(default=True) s_age = models.IntegerField() conetend = models.CharField(max_length=20) isDlete = models.BooleanField(default=False) # 關聯外來鍵 s_grade = models.ForeignKey("Grades") def __str__(self): return self.s_name class Meta: db_table = 'students'
url
from django.conf.urls import url from user import views urlpatterns = [ url(r'^show_info/',views.show_info,name='show_info'), url(r'^add_stu/',views.add_stu,name='add_stu'), url(r'^del_stu/(\d+)/',views.del_stu,name='del_stu'), url(r'^mod_stu/(\d+)/',views.mod_stu,name='mod_stu'), url(r'^sel_stu/',views.sel_stu,name='sel_stu'), ]
檢視函式定義
from django.shortcuts import render from django.http import HttpResponseRedirect from django.urls import reverse from user.models import Students,Grades def show_info(request): if request.method == 'GET': stus = Students.objects.all() return render(request,'info.html',{'stus':stus}) def add_stu(request): if request.method == 'GET': grades = Grades.objects.all() return render(request,'add.html',{'grades':grades}) if request.method == 'POST': name = request.POST.get('name') age = request.POST.get('age') gender = request.POST.get('sex') content = request.POST.get('msg') grade = request.POST.getlist('check')[0] sgrade = Grades.objects.get(g_name=grade) Students.objects.create(s_name=name,s_age=age,s_gender=gender,contend=content,s_grade=sgrade) return HttpResponseRedirect(reverse('user:show_info')) def del_stu(request,id): if request.method == 'GET': Students.objects.get(pk=id).delete() return HttpResponseRedirect(reverse('user:show_info')) def mod_stu(request,id): if request.method == 'GET': stu = Students.objects.get(pk=id) grades = Grades.objects.all() return render(request,'mod.html',{'stu':stu,'grades':grades}) if request.method == 'POST': name = request.POST.get('name') age = request.POST.get('age') gender = request.POST.get('gender') grade = request.POST.getlist('check')[0] u_grade = Grades.objects.get(g_name=grade) Students.objects.filter(pk=id).update(s_name=name,s_age=age,s_gender=gender,s_grade=u_grade) return HttpResponseRedirect(reverse('user:show_info')) def sel_stu(request): if request.method == 'GET': return render(request,'sel.html') if request.method == 'POST': name = request.POST.get('name') try: stu = Students.objects.get(s_name=name) return render(request, 'sel.html', {'stu': stu}) except: return render(request,'sel.html',{'error':'該學生不存在'})
頁面html定義
新增頁
{% extends 'base.html' %}
{% block content %}
<form action="" method="post">
{% csrf_token %}
姓名:<input type="text" name="name">
年齡:<input type="text" name="age">
性別:<input type="text" name="sex">
描述:<input type="text" name="msg">
{% for grade in grades %}
<input type="radio" name="check" value="{{grade.g_name}}">{{grade.g_name}}
{% endfor %}
<input type="submit" value="提交">
</form>
{% endblock %}
修改頁
{% extends 'base.html' %}
{% block content %}
<form action="" method="post">
{% csrf_token %}
姓名: <input type="text" name="name" value="{{stu.s_name}}">
年齡: <input type="text" name="age" value="{{stu.s_age}}">
性別: <input type="text" name="gender" value="{{stu.s_gender}}">
{% for grade in grades %}
<input type='radio' name="check" value="{{grade.g_name}}">{{grade.g_name}}
{% endfor %}
<input type="submit" value="修改">
</form>
{% endblock %}
查詢頁
{% extends 'base.html' %}
{% block content %}
<form action="" method="post">
{% csrf_token %}
請輸入學生姓名:<input type="text" name="name">
<input type="submit" value="提交">
<table border="1">
<br>
{% if stu %}
<thead>
<th align="center" style="color:red">序號</th>
<th align="center" style="color:red">姓名</th>
<th align="center" style="color:red">年齡</th>
<th align="center" style="color:red">性別</th>
<th align="center" style="color:red">簡介</th>
<th align="center" style="color:red">班級</th>
</thead>
<tbody>
<tr>
<td align="center">{{stu.id}}</td>
<td align="center">{{stu.s_name}}</td>
<td align="center">{{stu.s_age}}</td>
<td align="center">{{stu.s_gender}}</td>
<td align="center">{{stu.contend}}</td>
<td align="center">{{stu.s_grade.g_name}}</td>
</tr>
</tbody>
</table>
{% endif %}
</form>
<h1 style="color:red">{{error}}</h1>
{% endblock %}
資訊頁
{% extends 'base.html' %}
{% block content %}
<table border="1">
<thead>
<th align="center" style="color:red">序號</th>
<th align="center" style="color:red">姓名</th>
<th align="center" style="color:red">年齡</th>
<th align="center" style="color:red">性別</th>
<th align="center" style="color:red">班級</th>
<th align="center" style="color:red">班級成立時間</th>
<th align="center" style="color:red">刪除學生</th>
<th align="center" style="color:red">修改學生</th>
</thead>
<tbody>
{% for stu in stus %}
<tr>
<td align="center">{{forloop.counter}}</td>
<td align="center">{{stu.s_name}}</td>
<td align="center">{{stu.s_age}}</td>
<td align="center">{{stu.s_gender}}</td>
<td align="center">{{stu.s_grade.g_name}}</td>
<td align="center">{{stu.s_grade.create_date}}</td>
<td align="center"><a href="/user/del_stu/{{stu.id}}/">刪除</a></td>
<td align="center"><a href="/user/mod_stu/{{stu.id}}/">修改</a></td>
</tr>
{% endfor %}
</tbody>
</table>
<a href="/user/add_stu/{{stu.id}}/">增加學生</a>
<a href="/user/sel_stu/{{stu.id}}/">查詢學生</a>
{% endblock %}