1. 程式人生 > >django與mysql實現簡單的增刪查改

django與mysql實現簡單的增刪查改


模型定義

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 %}