python3.6+django2.0 學員管理系統demo
阿新 • • 發佈:2018-11-10
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
|