1. 程式人生 > >python3.6+django2.0 學員管理系統demo

python3.6+django2.0 學員管理系統demo

1.在pycharm中新建project demo1 新增app01 點選create按鈕完成新建

2.在demo專案目錄下新建目錄static,並在settings.py中追加程式碼:

  

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

  

3.在setting.py中新增模板路徑:


1 2 3 4 5 6 7 8 9 10 11 12 TEMPLATES = [      {          'BACKEND' : '...' ,         
'DIRS' : [os.path.join(BASE_DIR,  'templates' ),],          'APP_DIRS' : ...,          'OPTIONS' : {              'context_processors' : [                  ...              ],          },      }, ]

4.學員管理系統資料庫設計:

在app01/model.py目錄下建立 班級、老師、學生 、老師與班級關聯表  四張表:


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 from django.db import models   # Create your models here.     class Classes(models.Model):      '''      班級表      '''      title = models.CharField(max_length = 32 )      a = models.ManyToManyField( 'Teachers' )     class Teachers(models.Model):      '''      老師表      '''      name = models.CharField(max_length = 32 )     class Students(models.Model):      username = models.CharField(max_length = 32 )      age = models.IntegerField()      gender = models.BooleanField()      cs = models.ForeignKey(Classes,on_delete = models.CASCADE)

在終端Terminal 專案目錄下執行資料表更新命令:


1 2 python manage.py makemigrations python manage.py migrate

至此生成了四張資料表,可以在pycharm中,點開右上角的Database面板,然後將專案中templates目錄下邊的db.sqlite3滑鼠拖拽到Database面板下,對新建立的資料表進行檢視。

5.學員管理系統之班級管理:

為了方便分別操作班級、老師、學生相關的業務,將app01目錄下的views.py 刪掉,在app01目錄下新建目錄views,並在views目錄下 新建classes.py teachers.py students.py。

1.在classes.py 中寫 get_classes add_classes del_classes edit_classes四個函式,完成對 班級資料 的增刪改查:


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 from django.shortcuts import render,redirect from app01 import models     def get_classes(request):      cls_list = models.Classes.objects. all ()      return render(request, 'get_classes.html' ,{ 'cls_list' :cls_list})   def add_classes(request):      if request.method = = 'GET' :          return render(request, 'add_classes.html' )      elif request.method = = 'POST' :          title = request.POST.get( 'title' ,'')          models.Classes.objects.create(title = title)          return redirect( '/classes.html' )   def del_classes(request):      nid = request.GET.get( 'nid' ,'')      models.Classes.objects. filter ( id = nid).delete()      return redirect( '/classes.html' )   def edit_classes(request):      if request.method = = "GET" :          nid = request.GET.get( 'nid' , '')          obj = models.Classes.objects.get( id = nid)          return render(request, 'edit_classes.html' ,{ 'obj' :obj})      elif request.method = = "POST" :          nid = request.POST.get( 'nid' ,'')          title = request.POST.get( 'xxoo' ,'')          models.Classes.objects. filter ( id = nid).update(title = title)          return redirect( '/classes.html' )

2.在urls.py 中配置url路由:  


1 2 3 4 5 6 7 8 9 10 11 12 13 14 from django.contrib import admin from django.urls import path from app01.views import classes,students,teachers   urlpatterns = [      path( 'admin/' , admin.site.urls),      path( 'classes.html' , classes.get_classes),      path( 'add_classes.html' , classes.add_classes),      path( 'del_classes.html' , classes.del_classes),      path( 'edit_classes.html' , classes.edit_classes),      # path('teachers.html', teachers.get_teachers),      # path('students.html', students.get_studernts),   ]

3.在template目錄下建立所需的html頁面檔案:

get_classes.html


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 <!DOCTYPE html> < html lang="en"> < head >      < style >          tr td{ border:1px solid #000;text-align:center;}      </ style >      < meta charset="UTF-8">      < title >Title</ title > </ head > < body >   < div >      < table width="300">          < thead >              < tr >                  < th >ID</ th > < th >名稱</ th > < th >操作</ th >              </ tr >          </ thead >          < tbody >              {% for row in cls_list %}              < tr >                  < td >{{ row.id }}</ td >                  < td >{{ row.title }}</ td >                  < td >< a href="/del_classes.html?nid={{ row.id }}">刪除</ a >                      |< a href="/edit_classes.html?nid={{ row.id }}">編輯</ a >                  </ td >              </ tr >              {% endfor %}          </ tbody >      </ table > </ div >   < div >< a href="/add_classes.html">新增</ a > </ div > </ body > </ html >

 

add_classes.html


1 2 3 4 5 6 7 8 9 10 11 12 13 14 <! DOCTYPE html> < html lang="en"> < head >      < meta charset="UTF-8">      < title >Title</ title > </ head > < body > < form action="/add_classes.html" method="post">      {% csrf_token %}      < input type="text" name="title">      < input type="submit" value="提交"> </ form > </ body > </ html >

edit_classes.html


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <! DOCTYPE html> < html lang="en"> < head >      < meta charset="UTF-8">      < title >Title</ title > </ head > < body > < form method="post" action="/edit_classes.html">      {% csrf_token %}      < input type="hidden" name="nid" value="{{ obj.id }}">      < input type="text" name="xxoo" value="{{ obj.title }}">      < input type="submit" value="提交"> </ form >   </ body > </ html >

  

6.學員管理系統之學員管理:

1.在students.py 中寫 get_students add_students del_students edit_students 四個函式,完成對 學生資料 的增刪改查:


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 from django.shortcuts import render,redirect from app01 import models     def get_students(request):      stu_list = models.Students.objects. all ()      return render(request, 'get_students.html' ,{ 'stu_list' :stu_list})     def add_students(request):      if request.method = = 'GET' :          cs_list = models.Classes.objects. all ()          return render(request, 'add_students.html' ,{ 'cs_list' :cs_list})      elif request.method = = 'POST' :          u = request.POST.get( 'username' ,'')          a = request.POST.get( 'age' ,'')          g = request.POST.get( 'gender' ,'')          c = request.POST.get( 'cs' ,'')          models.Students.objects.create(              username = u,   &nb