django mysql—学生管理系统

'''实现增删改查四个功能'''

在terminal中输入

python manage.py startapp studentapp(创建firstapp)

每次新创建的app都要在setting.py中 INSTALLED_APPS注册一下否则templates目录下的下的模板无法正常渲染

1.先建一个mysql数据库(库名:student)

2.在models中创建类

from django.db import models
class Student(models.Model):
    id=models.IntegerField(primary_key=True)
    name=models.CharField(max_length=20)
    age=models.IntegerField()
    sex=models.CharField(max_length=100)
    grade=models.IntegerField()
    hobby=models.TextField()

3.在setting.py文件中配置数据库

DATABASES = {
    'default': {
                 'ENGINE': 'django.db.backends.mysql',
                 'NAME': 'student',
                 'USER': 'root',
                 'PASSWORD': '123456',
                 'HOST': '127.0.0.1',
                 'PORT': '3306',
                 }
}

4. 生成表

在terminal中输入以下命令:
python manage.py makemigrations
(负责收集models.py文件中数据模型的变化,如果这里的文件内容没有发生任何变化,会提示:No changes detected)
python manage.py migrate
将数据模型生成为数据库中的表。

5.创建static文件夹将.css文件复制到文件夹下,在setting中设置

STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]

6将.HTML文件复制到templates中并修改(可通过继承精简代码)

'''base.html'''
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    {% block title %}{% endblock %}{#留着子模板填充#}
</head>
<body>
     <h1 align="center">学生管理系统</h1>
     <center>{% block  content %}{% endblock %}</center>{#居中#}
</body>
</html>
‘’‘first.html’‘’
{% extends 'base.html' %}
{% block title %}{#填充父模板#}
    <title>欢迎登陆</title>
{% endblock %}
{% block content %}
    <button onclick="window.location.href = '/add/'">添加学生</button>
    <button onclick="window.location.href = '/delete/'" >删除学生</button>
    <button onclick="window.location.href = '/update/'" >修改学生</button>
    <button onclick="window.location.href = '/select/'" >查询学生</button>
{% endblock %}
'''add.html'''
{% extends 'base.html' %}
{% block title %}
    <title>添加</title>
{% endblock %}
{% block content %}
   <form  action="{{ url }}" method="post">
    {% csrf_token %}
    <label>
        <span>学号 :</span>
        <input id="id" type="text" name="id" placeholder="请输入要添加的学号"/>
    </label>
       <br>
    <label>
        <span>姓名 :</span>
        <input id="name" type="text" name="name" placeholder="请输入姓名"/>
    </label>
       <br>
    <label>
        <span>年龄 :</span>
        <input id="age" type="text" name="age" placeholder="请输入年龄"/>
    </label>
       <br>
    <label>
        <span>性别 :</span>
        <input id="sex" type="text" name="sex"  placeholder="请输入性别"/>
    </label>
       <br>
    <label>
        <span>年级 :</span>
        <input id="message" type="text" name="grade"  placeholder="请输入年级"/>
    </label>
       <br>
    <label>
        <span>爱好 :</span>
        <textarea id="hobby" type="text" name="hobby"  placeholder="请输入爱好"></textarea>
    </label>
    <br>
    <label>
        <span></span>
        <input type="submit"  value="{{ submit_type }}"/>
    </label>
</form>
{% endblock %}
'''delete.html'''
{% extends 'base.html' %}
{% block title %}
    <title>删除</title>
{% endblock %}
{% block content %}
<form  action="{{ url }}" method="post">
    {% csrf_token %}
    <label>
        <span>学号 :</span>
        <input id="id" type="text" name="id" placeholder="请输入要删除的学号"/>
    </label>
    <br>
   <label>
        <span></span>
        <input type="submit"  value="{{ submit_type }}"/>
    </label>
</form>
{% endblock %}
'''update.html'''
{% extends 'base.html' %}
{% block title %}
    <title>修改</title>
{% endblock %}
{% block content %}
    <form  action="{{ url }}" method="post">
    {% csrf_token %}
    <label>
        <span>学号 :</span>
        <input id="id" type="text" name="id" placeholder="请输入要修改的学号"/>
    </label>
        <br>
    <label>
        <span>姓名 :</span>
        <input id="name" type="text" name="name" placeholder="请输入修改后的姓名"/>
    </label>
        <br>
    <label>
        <span>年龄 :</span>
        <input id="age" type="text" name="age" placeholder="请输入修改后的年龄"/>
    </label>
        <br>
    <label>
        <span>性别 :</span>
        <input id="sex" type="text" name="sex"  placeholder="请输入修改后的性别"/>
    </label>
        <br>
    <label>
        <span>年级 :</span>
        <input id="message" type="text" name="grade"  placeholder="请输入修改后的年级"/>
    </label>
        <br>
    <label>
        <span>爱好 :</span>
        <textarea id="hobby" type="text" name="hobby"  placeholder="请输入修改后的爱好"></textarea>
    </label>
    <br>
    <label>
        <span></span>
        <input type="submit" value="{{ submit_type }}"/>
    </label>
</form>
{% endblock %}
'''select.html'''
{% extends 'base.html' %}
{% block title %}
    <title>查询</title>
{% endblock %}
{% block content %}
   <form  action="{{ url }}" method="post">
    {% csrf_token %}
    <label>
        <span>学号 :</span>
        <input id="id" type="text" name="id" placeholder="请输入要查询的学号"/>
    </label>
   <br>
   <label>
        <span></span>
        <input type="submit"class="button" value="{{ submit_type }}"/>
    </label>
</form>
    {% if s %}
      <div>学号:{{ s.id }}&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp姓名:{{ s.name }}&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp年龄:{{ s.age }}&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp性别:{{ s.sex }}&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp年级:{{ s.grade }}&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp爱好:{{ s.hobby }}.
      </div>
   {% endif %}
{% endblock %}
'''success.html'''
{% extends 'base.html' %}
{% block title %}
    <title>操作成功</title>
{% endblock %}
{% block content %}
         <h2>操作成功</h2>
         <button onclick="window.location.href = '/first/'" >返回首页</button>
{% endblock %}

7.在views中编写功能函数

from django.shortcuts import render
from .models import Student
def first(request):
    return render(request,template_name='first.html')
def success(request):
    return render(request,template_name='success.html')
def add(request):
    if request.method=='GET':
        context={
            'submit_type':'添加',
            'url':'/add/'
        }
        return render(request, template_name='add.html', context=context)
    elif request.method=='POST':
        id=request.POST.get('id')
        name=request.POST.get('name')
        age=request.POST.get('age')
        sex=request.POST.get('sex')
        grade=request.POST.get('grade')
        hobby=request.POST.get('hobby')
        s=Student(id=id,name=name,age=age,sex=sex,grade=grade,hobby=hobby)
        s.save()
        return render(request,template_name='success.html')
def delete(request):
    if request.method=='GET':
        context={
            'submit_type':'删除',
            'url':'/delete/'
        }
        return render(request, template_name='delete.html', context=context)
    elif request.method=='POST':
        id = request.POST.get('id')
        s = Student.objects.get(id=id)
        s.delete()
        return render(request, template_name='success.html')

def update(request):
    if request.method=='GET':
        context={
            'submit_type':'修改',
            'url':'/update/'
        }
        return render(request, template_name='update.html', context=context)
    elif request.method=='POST':
        id = request.POST.get('id')
        name = request.POST.get('name')
        age = request.POST.get('age')
        sex = request.POST.get('sex')
        grade = request.POST.get('grade')
        hobby = request.POST.get('hobby')
        s=Student.objects.get(id=id)
        s.name=name
        s.age=age
        s.sex=sex
        s.grade=grade
        s.hobby=hobby
        s.save()
        return render(request,template_name='success.html')
def select(request):
    if request.method == 'GET':
        context = {
            'submit_type': '查询',
            'url': '/select/'
        }
        return render(request, template_name='select.html', context=context)
    elif request.method == 'POST':
        id = request.POST.get('id')
        s = Student.objects.get(id=int(id))
        return render(request,template_name='select.html',context={'s':s,'submit_type':'查询','url':'/select/'})

8.urls中设置路由

from django.contrib import admin
from django.urls import path
from studentapp.views import add,delete,update,select,first
urlpatterns = [
    path('admin/', admin.site.urls),
    path('add/', add),
    path('delete/', delete),
    path('update/', update),
    path('select/', select),
    path('first/', first),
    path('success/', success)
]

8.启动项目

python manage.py runserver

9.登录

http://127.0.0.1:8000/first/

图片.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352