久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Django框架實現在線考試系統的示例代碼

瀏覽:4日期:2024-09-16 15:44:52
1.Django的簡介

Django是一個基于MVC構造的框架。但是在Django中,控制器接受用戶輸入的部分由框架自行處理,所以 Django 里更關注的是模型(Model)、模板(Template)和視圖(Views),稱為 MTV模式。它們各自的職責如下:

層次 職責 模型(Model),即數據存取層 模型(Model),即數據存取層 模板(Template),即表現層 處理與表現相關的決定: 如何在頁面或其他類型文檔中進行顯示。 視圖(View),即業務邏輯層 存取模型及調取恰當模板的相關邏輯。模型與模板的橋梁。

Django里重要的概念有:

路由映射 視圖函數 模板渲染 Django自帶的ORM操作(對象關系映射)2.項目的設計思路

1.在線考試系統需求如下:(1)系統登錄:驗證登錄用戶的身份,根據用戶身份進入不同的頁面。(2)學生管理:供管理員使用,用于維護學生基本信息。(3)老師管理:供管理員使用,用于維護教師的基本信息。(4)試題管理:供教師管理,用于維護題庫。(5)組卷:供教師使用,教師可以根據考試科目,從題庫中選擇一些符合條件的試題,形成一份試卷。為了方便教師組卷,應提供方便的查詢功能,使教師能查詢不同要求的試題。(6)在線考試:供學生使用,根據學生的班級和登錄時間顯示應考科目的試卷內容。試卷完成提交或考試時間到,不再允許學生修改試卷;實現自動評閱,記錄學生的考試成績,并將評閱結果提供給學生。(7)成績統計:供教師使用,按照科目、班級等統計學生的考試成績。(8)成績查詢:供教師和學生使用,提供不同查詢方式,使教師和學生可以按需查詢考試成績。

2.設計思路(1)確定角色由需求分析看出,系統有三個基本角色,學生、教師、管理員。

管理員負責后臺信息的維護 系統要能實現自動閱卷功能

(2)數據庫表的設計因此,我們至少需要如下幾個表:

學生表 student 教師表 teacher 題庫表 question(為了方便,題庫中都為單項選擇題) 試卷表 paper 學生成績表 grade

設計完表,我們還需要確定表間的關系,是1對1(1:1),1對多(1:n),還是多對多(n:m),這很重要,因為后面我們在models.py中創建表時,需要指出表間關系。顯然

學生表和成績表,1個學生可參加多門考試,會有多個成績,學生表和成績表為1:n 教師表和試卷表,1個教師會發布多套試卷,但1套試卷只能由1位教師發布,教師表和試卷表為1:n 試卷表和題庫表,1套試卷里包含多道題,題庫里的每道題也可出現在多個試卷中,故試卷表和題庫表為n:m

表的詳細設計如下:(使用MindMaster繪制,有點丑,請忽略,重點寫下自己的思考和思路)

Django框架實現在線考試系統的示例代碼

3.搭建你的開發環境

IDE使用PyCharm(profession版的)python 3.7, Django 2.1.0數據庫為關系數據庫mysql 5.6

為了更快的下載python模塊,需要切換鏡像源,我使用阿里云的鏡像(還有很多鏡像源),方法如下:在 C:UsersXXX(你的賬戶) 下建立 pip文件夾,在pip下建立 pip.ini文件,輸入以下代碼:

[global]index-url = http://mirrors.aliyun.com/pypi/simple/[install]trusted-host=mirrors.aliyun.com

安裝所需模塊

Django的安裝: pip install django==2.1.0(請指定版本號,最新的Django需要數據庫mysql5.6以上),你可以使用pip list來查看版本,使用 pip uninstall django 來卸載django模塊

安裝mysql數據庫驅動 pip install pymysql配置好后建立項目

(1) 在PyCharm中建立Django項目

Django框架實現在線考試系統的示例代碼

圖1 建立項目

此處沒有使用虛擬環境,你也可以選擇 “New environment using”選項來創建一個虛擬環境(可以避免多個項目使用不同模塊的版本時發生沖突)

(2)創建appTools->Run manage.py task

Django框架實現在線考試系統的示例代碼

在控制臺輸入 startapp student,創建一個student app,

Django框架實現在線考試系統的示例代碼

之后需要將student app配置在項目的settings.py中,由于我的前臺需要用到css、BootStrap、一些圖片等文件,所以我在項目下建立static文件夾,并將其路徑配置在settings.py文件中。整體目錄如下:

Django框架實現在線考試系統的示例代碼

(3)settings.py文件的配置配置settings.py文件配置如下,請看注釋

INSTALLED_APPS = [ ’django.contrib.admin’, ’django.contrib.auth’, ’django.contrib.contenttypes’, ’django.contrib.sessions’, ’django.contrib.messages’, ’django.contrib.staticfiles’, ’student’,#將建立的app名稱加入Installed_APPs中]MIDDLEWARE = [ ’django.middleware.security.SecurityMiddleware’, ’django.contrib.sessions.middleware.SessionMiddleware’, ’django.middleware.common.CommonMiddleware’, # ’django.middleware.csrf.CsrfViewMiddleware’, ’django.contrib.auth.middleware.AuthenticationMiddleware’, ’django.contrib.messages.middleware.MessageMiddleware’, ’django.middleware.clickjacking.XFrameOptionsMiddleware’,]ROOT_URLCONF = ’onlineExam.urls’TEMPLATES = [ { ’BACKEND’: ’django.template.backends.django.DjangoTemplates’, ’DIRS’: [os.path.join(BASE_DIR, ’templates’)] , ’APP_DIRS’: True, ’OPTIONS’: { ’context_processors’: [’django.template.context_processors.debug’,’django.template.context_processors.request’,’django.contrib.auth.context_processors.auth’,’django.contrib.messages.context_processors.messages’, ], }, },]WSGI_APPLICATION = ’onlineExam.wsgi.application’# Database# https://docs.djangoproject.com/en/2.1/ref/settings/#databases#配置mysql數據庫DATABASES = { ’default’: { ’ENGINE’: ’django.db.backends.mysql’, ’NAME’: ’exam’,#使用數據庫的名稱 ’USER’:’root’,#用戶名 ’PASSWORD’:’123456’,#密碼 ’HOST’:’127.0.0.1’,#地址 ’PORT’:’3306’#端口號 }}# Password validation# https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validatorsAUTH_PASSWORD_VALIDATORS = [ { ’NAME’: ’django.contrib.auth.password_validation.UserAttributeSimilarityValidator’, }, { ’NAME’: ’django.contrib.auth.password_validation.MinimumLengthValidator’, }, { ’NAME’: ’django.contrib.auth.password_validation.CommonPasswordValidator’, }, { ’NAME’: ’django.contrib.auth.password_validation.NumericPasswordValidator’, },]# Internationalization# https://docs.djangoproject.com/en/2.1/topics/i18n/#修改語言為中文LANGUAGE_CODE = ’zh-hans’#修改時區為shanghaiTIME_ZONE = ’Asia/Shanghai’USE_I18N = TrueUSE_L10N = TrueUSE_TZ = True# Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/2.1/howto/static-files/#添加static文件夾STATIC_URL = ’/static/’STATICFILES_DIRS=[ os.path.join(BASE_DIR,’static’),]

需要注意的地方有:

NSTALLED_APPS 添加了新建的student app DATABASES 配置你的數據庫參數 MIDDLEWARE 注釋掉了 # ’django.middleware.csrf.CsrfViewMiddleware’這一行 STATICFILES_DIRS 添加新建的static文件夾

(4)在__init___.py文件添加mysql的驅動模塊

import pymysqlpymysql.install_as_MySQLdb()4.分模塊詳細設計

(1)建表在student下的models.py中建表

from django.db import models# Create your models here.# 為性別,學院 指定備選字段SEX=( (’男’,’男’), (’女’,’女’),)DEPT=( (’計算機與通信學院’,’計算機與通信學院’), (’電氣與自動化學院’,’電氣與自動化學院’), (’外國語學院’,’外國語學院’), (’理學院’,’理學院’),)class Student(models.Model): id=models.CharField(’學號’,max_length=20,primary_key=True) name=models.CharField(’姓名’,max_length=20) sex=models.CharField(’性別’,max_length=4,choices=SEX,default=’男’) dept=models.CharField(’學院’,max_length=20,choices=DEPT,default=None) major=models.CharField(’專業’,max_length=20,default=None) password=models.CharField(’密碼’,max_length=20,default=’111’) email=models.EmailField(’郵箱’,default=None) birth=models.DateField(’出生日期’) class Meta: db_table=’student’ verbose_name=’學生’ verbose_name_plural=verbose_name def __str__(self): return self.id;class Teacher(models.Model): id=models.CharField('教工號',max_length=20,primary_key=True) name=models.CharField(’姓名’,max_length=20) sex=models.CharField(’性別’,max_length=4,choices=SEX,default=’男’) dept=models.CharField(’學院’,max_length=20,choices=DEPT,default=None) email=models.EmailField(’郵箱’,default=None) password=models.CharField(’密碼’,max_length=20,default=’000000’) birth=models.DateField(’出生日期’) class Meta: db_table=’teacher’ verbose_name=’教師’ verbose_name_plural=verbose_name def __str__(self): return self.name;class Question(models.Model): ANSWER=( (’A’,’A’), (’B’,’B’), (’C’,’C’), (’D’,’D’), ) LEVEL={ (’1’,’easy’), (’2’,’general’), (’3’,’difficult’), } id = models.AutoField(primary_key=True) subject = models.CharField(’科目’, max_length=20) title = models.TextField(’題目’) optionA=models.CharField(’A選項’,max_length=30) optionB=models.CharField(’B選項’,max_length=30) optionC=models.CharField(’C選項’,max_length=30) optionD=models.CharField(’D選項’,max_length=30) answer=models.CharField(’答案’,max_length=10,choices=ANSWER) level=models.CharField(’等級’,max_length=10,choices=LEVEL) score=models.IntegerField(’分數’,default=1) class Meta: db_table=’question’ verbose_name=’單項選擇題庫’ verbose_name_plural=verbose_name def __str__(self): return ’<%s:%s>’%(self.subject,self.title);class Paper(models.Model): #題號pid 和題庫為多對多的關系 pid=models.ManyToManyField(Question)#多對多 tid=models.ForeignKey(Teacher,on_delete=models.CASCADE)#添加外鍵 subject=models.CharField(’科目’,max_length=20,default=’’) major=models.CharField(’考卷適用專業’,max_length=20) examtime=models.DateTimeField() class Meta: db_table=’paper’ verbose_name=’試卷’ verbose_name_plural=verbose_name def __str__(self): return self.major;class Grade(models.Model): sid=models.ForeignKey(Student,on_delete=models.CASCADE,default=’’)#添加外鍵 subject=models.CharField(’科目’,max_length=20,default=’’) grade=models.IntegerField() def __str__(self): return ’<%s:%s>’%(self.sid,self.grade); class Meta: db_table=’grade’ verbose_name=’成績’ verbose_name_plural=verbose_name

(2)將模型映射到mysql數據庫中,很簡單,打開 Run manage.py Task,輸入遷移命令先輸入makemigrate命令,作用是生成sql文件(create table student(id,sex,…) ),執行后可在student-> migrations下看到執行結果

Django框架實現在線考試系統的示例代碼

Django框架實現在線考試系統的示例代碼

再輸入migrate命令,執行makemigrate生成的sql語句,表就建好了,你可以使用navicat或workBench等工具看到Django為我們建好的表

Django框架實現在線考試系統的示例代碼

(2)創建管理員繼續輸入createsuperuser命令創建管理員,以便登陸后臺

Django框架實現在線考試系統的示例代碼

(3)創建模板在templates中建立index.html模板,作為考試系統首頁.(可去官網下載BootStrap、JQuery)在頭文件里引入時注意順序,jquery須在bootstrap.min.js之前引入

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <meta name='viewport' content='width=device-width, initial-scale=1'> <link href='http://www.gepszalag.com/static/bootstrap-4.3.1-dist/css/bootstrap.min.css' rel='external nofollow' rel='external nofollow' rel='stylesheet'> <!-- 必須在引入bootstarp.js之前引入 --> <script src='http://www.gepszalag.com/static/jquery-3.3.1.min.js'></script> <script src='http://www.gepszalag.com/static/bootstrap-4.3.1-dist/js/bootstrap.min.js'></script> <link href='http://www.gepszalag.com/static/css/index.css' rel='external nofollow' rel='stylesheet'> <title>在線考試系統</title></head><body><nav class='navbar navbar-expand-sm bg-light navbar-light '> <ul class='navbar-nav'> <li class='nav-item'> <a href='http://www.gepszalag.com/toIndex/' rel='external nofollow' ><h3>在線考試系統 首頁</h3></a> </li> <li> <button data-target='#stuModal' data-toggle='modal' class='btn btn-primary'>學生登陸</button> </li> <li> <button data-target='#teaModal' data-toggle='modal' class='btn btn-primary'>教師登陸</button> </li> <li class='nav-item'> <a href='http://www.gepszalag.com/admin' rel='external nofollow' >管理員</a> </li> <li style='position: fixed;right: 70px; font-size: 40px;color: #9fcdff'>{{ student.name }}{{ message }}</li> <a href='http://www.gepszalag.com/logout/' rel='external nofollow' ><li style='position: fixed;right: 20px; font-size: 20px;top:22px;color:#cc1313'>退出</li></a> </ul></nav><div class='container'> <br> <!-- Nav pills --> <ul role='tablist'> <li class='nav-item'> <a data-toggle='pill' href='http://www.gepszalag.com/bcjs/17126.html#home' rel='external nofollow' >個人信息</a> </li> <li class='nav-item'> <a data-toggle='pill' href='http://www.gepszalag.com/bcjs/17126.html#menu1' rel='external nofollow' >考試信息</a> </li> <li class='nav-item'> <a data-toggle='pill' href='http://www.gepszalag.com/bcjs/17126.html#menu2' rel='external nofollow' >成績查詢</a> </li> </ul> <!-- Tab panes --> <div class='tab-content'> <div class='container tab-pane active'><br> <h3>個人信息</h3> <table class='table'> <thead> <tr> <th>屬性</th> <th>信息</th> </tr> </thead> <tbody> <tr> <td>學號</td> <td>{{ student.id }}</td> </tr> <tr class='table-primary'> <td>姓名</td> <td>{{ student.name }}</td> </tr> <tr class='table-success'> <td>性別</td> <td>{{ student.sex }}</td> </tr> <tr class='table-danger'> <td>學院</td> <td>{{ student.dept }}</td> </tr> <tr class='table-success'> <td>專業</td> <td>{{ student.major }}</td> </tr> <tr class='table-warning'> <td>郵箱地址</td> <td>{{ student.email }}</td> </tr> <tr class='table-active'> <td>出生日期</td> <td>{{ student.birth }}</td> </tr> </tbody> </table> </div> <div class='container tab-pane fade'><br> <h3>考試信息</h3> <p></p> <table class='table'> <thead> <tr> <th>學號</th> <th>姓名</th> <th>考試科目</th> <th>考試時間</th> <th>操作</th> </tr> </thead> <tbody> {# 遍歷字典 paper #} {% for paper1 in paper %} <tr class='table-info'> <td>{{ student.id }}</td> <td>{{ student.name }}</td> <td>{{ paper1.subject }}{{ paper2.subject }}</td> <td>{{ paper1.examtime }} {{ paper2.examtime }}</td> <td> <a href='http://www.gepszalag.com/startExam/?sid={{ student.id }}&subject={{ paper1.subject }}' rel='external nofollow' rel='external nofollow' > <button id='toExam+{{ paper1.subject }}'>開始考試</button> </a> </td> </tr> {% endfor %} </tbody> </table> </div> <div class='container tab-pane fade'><br> <h3>考試成績</h3> <p></p> <table class='table'> <thead> <tr> <th>姓名</th> <th>科目</th> <th>成績</th> </tr> </thead> <tbody> {% for grade1 in grade %} <tr class='table-primary'> <td>{{ student.name }}</td> <td>{{ grade1.subject }}</td> <td>{{ grade1.grade }}</td> </tr> {% endfor %} </tbody> </table> </div> </div></div>{#學生登錄的模態對話框#}<div tabindex='-1' role='dialog' id='stuModal'> <div role='document'> <div class='modal-content'> <div class='modal-header'><button type='button' data-dismiss='modal' aria-label='Close'> <span aria-hidden='true'>&times;</span></button><h4 class='modal-title'>學生登陸</h4> </div> <form action='/studentLogin/' method='post'> <div class='modal-body'> <div class='form-group'> <label class='col-sm-3 control-label'>學生學號</label> <div class='col-sm-9'> <input type='text' name='id' placeholder='輸入學號'> </div> </div> <div class='form-group'> <label for='addr' class='col-sm-3 control-label'>密碼</label> <div class='col-sm-9'> <!-- <textarea rows='3'></textarea> --> <input type='password' name='password' placeholder='輸入密碼'> </div> </div> </div> <div class='modal-footer'><button type='button' data-dismiss='modal'>取消</button><button type='submit' class='btn btn-primary'>登陸</button> </div> </form> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --></div>{#老師登錄的模態對話框#}<div tabindex='-1' role='dialog' id='teaModal'> <div role='document'> <div class='modal-content'> <div class='modal-header'><button type='button' data-dismiss='modal' aria-label='Close'> <span aria-hidden='true'>&times;</span></button><h4 class='modal-title'>教師登陸</h4> </div> <form action='/teacherLogin/' method='post'> <div class='modal-body'> <div class='form-group'> <label for='inputEmail3' class='col-sm-3 control-label'>教師工號</label> <div class='col-sm-9'> <input type='text' name='id' placeholder='輸入學號'> </div> </div> <div class='form-group'> <label for='addr' class='col-sm-3 control-label'>密碼</label> <div class='col-sm-9'> <!-- <textarea rows='3'></textarea> --> <input type='password' name='password' placeholder='輸入密碼' class='form-control'> </div> </div> </div> <div class='modal-footer'><button type='button' data-dismiss='modal'>取消</button><button type='submit' class='btn btn-primary'>登陸</button> </div> </form> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --></div></body><script> $('#toExam+{{ paper1.subject }}').click(function () { });</script></html>

Django使用{{ }}來使用后臺傳來的數據(4)創建視圖函數在student->views.py中創建進入首頁的視圖函數index()

from django.shortcuts import render,redirectfrom student import modelsfrom django.http import HttpResponsefrom django.contrib.auth import logout# Create your views here.def index(request): return render(request,’index.html’)

將視圖函數配置在路由中,打開項目的urls.py文件

from django.contrib import adminfrom django.urls import pathfrom django.conf.urls import urlfrom student import viewsurlpatterns = [ #管理員登陸 path(’admin/’, admin.site.urls), #默認訪問首頁 url(r’^$’,views.index),]

r表示使用正則表達式解析url地址,^表示開始,$表示結束,views.index表示調用視圖函數index(5)啟動服務器(可以看到效果了)兩種方式啟動服務器:執行runserver命令,或點擊綠色小圖標

Django框架實現在線考試系統的示例代碼

點擊網址,默認8000端口,成功后如下圖

Django框架實現在線考試系統的示例代碼

我們還需要定制自己的后臺,在student->admin.py中注冊各模塊

from django.contrib import adminfrom .models import Student,Teacher,Paper,Question,Grade# Register your models here.# 修改名稱admin.site.site_header=’在線考試系統后臺’admin.site.site_title=’在線考試系統’@admin.register(Student)class StudentAdmin(admin.ModelAdmin): list_display = (’id’,’name’,’sex’,’dept’,’major’,’password’,’email’,’birth’)# 要顯示哪些信息 list_display_links = (’id’,’name’)#點擊哪些信息可以進入編輯頁面 search_fields = [’name’,’dept’,’major’,’birth’] #指定要搜索的字段,將會出現一個搜索框讓管理員搜索關鍵詞 list_filter =[’name’,’dept’,’major’,’birth’]#指定列表過濾器,右邊將會出現一個快捷的過濾選項

對其他4個model注冊后臺

@admin.register(Teacher)class TeacherAdmin(admin.ModelAdmin): list_display = (’id’, ’name’, ’sex’, ’dept’, ’password’, ’email’, ’birth’) list_display_links = (’id’, ’name’) search_fields = [’name’, ’dept’, ’birth’] list_filter = [’name’,’dept’]@admin.register(Question)class QuestionAdmin(admin.ModelAdmin): list_display = (’id’,’subject’,’title’,’optionA’,’optionB’,’optionC’,’optionD’,’answer’,’level’,’score’)

刷新,點擊首頁管理員超鏈接,進入后臺,使用前邊創建的superuser賬戶和密碼登陸

Django框架實現在線考試系統的示例代碼

進入后臺

Django框架實現在線考試系統的示例代碼

使用后臺添加學生信息

(6)實現學生的登陸這里需要用到Django內置的ORM模塊,不在贅述,需要的同學看前邊網站入門。

在views.py中創建studentLogin函數

學生登陸的form表單將學生輸入的學號(id),密碼(password)通過post方式提交給服務器,所以視圖函數先接受表單參數,判斷用戶名和密碼與數據庫是否一致,若一致,則登陸成功。

登陸成功后,我需要發送至少三條信息給index.html,(1)該學生的基本信息(2)該學生考試信息,可通過該學生的專業名稱在試卷表中查到有哪些要進行的考試(3)該學生的考試成績信息,可通過學生的學號在paper表中查詢代碼如下:

def studentLogin(request): if request.method==’POST’: # 獲取表單信息 stuId=request.POST.get(’id’) password=request.POST.get(’password’) print('id',stuId,'password',password) # 通過學號獲取該學生實體 student=models.Student.objects.get(id=stuId) print(student) if password==student.password: #登錄成功 #查詢考試信息 paper=models.Paper.objects.filter(major=student.major) #查詢成績信息 grade=models.Grade.objects.filter(sid=student.id) # 渲染index模板 return render(request,’index.html’,{’student’:student,’paper’:paper,’grade’:grade}) else:return render(request,’index.html’,{’message’:’密碼不正確’})

(7)模板的渲染(數據的顯示)登陸成功后,發送三個字典數據給index,index模板使用{{ }}、for等模板語句渲染

<tr class='table-warning'> <td>郵箱地址</td> <td>{{ student.email }}</td> </tr> <tr class='table-active'> <td>出生日期</td> <td>{{ student.birth }}</td> </tr> </tbody> </table> </div> <div class='container tab-pane fade'><br> <h3>考試信息</h3> <p></p> <table class='table'> <thead> <tr> <th>學號</th> <th>姓名</th> <th>考試科目</th> <th>考試時間</th> <th>操作</th> </tr> </thead> <tbody> {# 遍歷字典 paper #} {% for paper1 in paper %} <tr class='table-info'> <td>{{ student.id }}</td> <td>{{ student.name }}</td> <td>{{ paper1.subject }}{{ paper2.subject }}</td> <td>{{ paper1.examtime }} {{ paper2.examtime }}</td> <td> <a href='http://www.gepszalag.com/startExam/?sid={{ student.id }}&subject={{ paper1.subject }}' rel='external nofollow' rel='external nofollow' > <button id='toExam+{{ paper1.subject }}'>開始考試</button> </a> </td> </tr> {% endfor %} </tbody> </table> </div> <div class='container tab-pane fade'><br> <h3>考試成績</h3> <p></p> <table class='table'> <thead> <tr> <th>姓名</th> <th>科目</th> <th>成績</th> </tr> </thead> <tbody> {% for grade1 in grade %} <tr class='table-primary'> <td>{{ student.name }}</td> <td>{{ grade1.subject }}</td> <td>{{ grade1.grade }}</td> </tr> {% endfor %} </tbody> </table> </div> </div>

Django框架實現在線考試系統的示例代碼

Django框架實現在線考試系統的示例代碼

Django框架實現在線考試系統的示例代碼

(8)教師登陸同上,學生在線考試和系統自動閱卷怎么實現呢?我是這樣做的

學生登陸成功后,點擊'開始考試'按鈕,按鈕將兩個請求信息發送到服務器,自己的學號和試卷的科目。

startExam視圖函數接收到學號和試卷的科目,找到試卷信息發送給另一模板(exam.html)渲染因此,建立繼續建立exam.html模板和startExam視圖函數

def startExam(request): sid = request.GET.get(’sid’) subject1=request.GET.get(’subject’) #得到學生信息 student=models.Student.objects.get(id=sid) #試卷信息 paper=models.Paper.objects.filter(subject=subject1) # print(’學號’,sid,’考試科目’,subject1) return render(request,’exam.html’,{’student’:student,’paper’:paper,’subject’:subject1})

exam模板如下:

<!DOCTYPE HTML><html lang='en'><head> <meta charset='UTF-8'><meta http-equiv='content-type' content='text/html;charset=UTF-8'><meta name='viewport' content='width=device-width, initial-scale=1.0' /><title>在線答題考試系統</title> <link href='http://www.gepszalag.com/static/bootstrap-4.3.1-dist/css/bootstrap.min.css' rel='external nofollow' rel='external nofollow' rel='stylesheet'> <!-- 必須在引入bootstarp.js之前引入 --> <script src='http://www.gepszalag.com/static/jquery-3.3.1.min.js'></script> <script src='http://www.gepszalag.com/static/bootstrap-4.3.1-dist/js/bootstrap.min.js'></script> <script src='http://www.gepszalag.com/static/js/jquery-1.11.3.min.js'></script> <script src='http://www.gepszalag.com/static/js/jquery.countdown.js'></script> <!--時間js--> <link href='http://www.gepszalag.com/static/css/main.css' rel='external nofollow' rel='stylesheet' type='text/css' /> <link href='http://www.gepszalag.com/static/css/test.css' rel='external nofollow' rel='stylesheet' type='text/css' /><style>.hasBeenAnswer {background: #5d9cec;color:#fff;}</style></head><body><nav class='navbar navbar-expand-sm bg-light navbar-light '> <ul class='navbar-nav'> <li class='nav-item active'> <a class='nav-link'><h3>在線考試系統</h3></a> </li> <li class='nav-item active'> <a class='nav-link'><h3>當前科目:{{ subject }}</h3></a> </li> <li style='position: fixed;right: 70px; font-size: 30px;color: #9fcdff'>{{ student.name }}</li> </ul></nav><div class='main'><!--nr start--><div class='test_main'><div class='nr_left'><div class='test'><form action='/calGrade/' method='post'><input type='hidden' name='sid' value='{{ student.id }}'><input type='hidden' name='subject' value='{{ subject }}'><div class='test_title'><p class='test_time'><i class='icon iconfont'>&#xe6fb;</i><b class='alt-1'>01:40</b></p><font><input type='submit' name='tijiao' value='交卷'></font></div><div class='test_content'><div class='test_content_title'><h2>單選題</h2><p><span>共</span><i class='content_lit'>10</i><span>題,</span> <span>合計</span><i class='content_fs'>10</i><span>分</span></p></div></div><div class='test_content_nr'><ul>{% for paper1 in paper %} {% for test in paper1.pid.all %} <li id='{{ forloop.counter }}'> <div class='test_content_nr_tt'><i>{{ forloop.counter}}</i><span>({{ test.score }}分)</span> <font>{{ test.title }}</font></div> <div class='test_content_nr_main'><ul><li class='option'><input type='radio' name='{{ test.id }}' value='A'/><label>A. <p style='display: inline;'>{{ test.optionA }}</p></label></li><li class='option'><input type='radio' name='{{ test.id }}' value='B'/><label>B.<p style='display: inline;'>{{ test.optionB }}</p></label></li><li class='option'><input type='radio' name='{{ test.id }}' value='C'/><label>C.<p style='display: inline;'>{{ test.optionC }}</p></label></li><li class='option'><input type='radio' name='{{ test.id }}' value='D'/><label>D.<p style='display: inline;'>{{ test.optionD }}</p></label></li></ul></div> </li> {% endfor %}{% endfor %}</ul></div></form></div></div></div><!--nr end--><div class='foot'></div></div></body></html>

效果是這樣的:

Django框架實現在線考試系統的示例代碼

自動閱卷就簡單了:

學生提交自己的作答給服務器(同時發送自己的學號和考試科目) 服務器根據考試科目找到該試卷,并逐個比較學生作答和答案是否一致,若一致,則得到該題的分數,并累加學生成績 將學生的學號、該科成績、科目名稱作為一條記錄插入到grade表中,返回首頁

這里有個細節,試卷中會有很多選擇題,后臺一次會接收到多個提交答案,我是這樣處理的,讓每個單選題(有4個選項,使用同一name)的name屬性和該題在題庫表中的id 保持一致,這樣在獲取到題號后可以得到該題的答案,以便判斷是否作答正確,詳見exam.html。

計算成績的calGrade()視圖函數如下:

def calGrade(request): if request.method==’POST’: # 得到學號和科目 sid=request.POST.get(’sid’) subject1 = request.POST.get(’subject’) # 重新生成Student實例,Paper實例,Grade實例,名字和index中for的一致,可重復渲染 student= models.Student.objects.get(id=sid) paper = models.Paper.objects.filter(major=student.major) grade = models.Grade.objects.filter(sid=student.id) # 計算該門考試的學生成績 question= models.Paper.objects.filter(subject=subject1).values('pid').values(’pid__id’,’pid__answer’,’pid__score’) mygrade=0#初始化一個成績為0 for p in question: qId=str(p[’pid__id’])#int 轉 string,通過pid找到題號 myans=request.POST.get(qId)#通過 qid 得到學生關于該題的作答 # print(myans) okans=p[’pid__answer’]#得到正確答案 # print(okans) if myans==okans:#判斷學生作答與正確答案是否一致mygrade+=p[’pid__score’]#若一致,得到該題的分數,累加mygrade變量 #向Grade表中插入數據 models.Grade.objects.create(sid_id=sid,subject=subject1,grade=mygrade) # print(mygrade) # 重新渲染index.html模板 return render(request,’index.html’,{’student’:student,’paper’:paper,’grade’:grade})

(9)使用百度e-charts可視化數據教師查看學生成績,可以統計各個分數段的人數

Django框架實現在線考試系統的示例代碼

Django框架實現在線考試系統的示例代碼

我的思路:

教師查看學生成績,點擊查看成績按鈕后,發送該科科目名稱給后臺后臺 視圖函數接收科目名,從grade表計算該科目各個分數段的人數,發送給前臺模板渲染,并可視化

視圖函數如下:

#教師查看成績def showGrade(request): subject1=request.GET.get(’subject’) grade=models.Grade.objects.filter(subject=subject1) data1 = models.Grade.objects.filter(subject=subject1, grade__lt=60).count() data2 = models.Grade.objects.filter(subject=subject1, grade__gte=60, grade__lt=70).count() data3 = models.Grade.objects.filter(subject=subject1, grade__gte=70, grade__lt=80).count() data4 = models.Grade.objects.filter(subject=subject1, grade__gte=80, grade__lt=90).count() data5 = models.Grade.objects.filter(subject=subject1, grade__gte=90).count() data = {’data1’: data1, ’data2’: data2, ’data3’: data3, ’data4’: data4, ’data5’: data5} return render(request,’showGrade.html’,{’grade’:grade,’data’:data,’subject’:subject1})5.總結

到此這篇關于Django框架實現在線考試系統的示例代碼的文章就介紹到這了,更多相關Django 在線考試系統內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Django
相關文章:
主站蜘蛛池模板: www.色综合| 国产精品二区三区 | 国产高清在线精品一区二区三区 | 久久色视频 | 国产精品久久 | 亚洲精品一区二区三区蜜桃久 | 国产精品久久久久久久久久久久久久 | 综合网激情 | 国内外成人在线视频 | 少妇一级淫免费放 | 欧美精产国品一二三区 | 欧美日韩国产在线观看 | 国产精品一区二区三区免费 | 午夜a v电影 | 久久这| 不卡成人 | 国产精品久久久久久久久 | 99福利视频 | 亚洲国产婷婷香蕉久久久久久99 | 成人免费视频视频 | 在线一区二区三区 | 男女做爰高清无遮挡免费视频 | 成人小视频在线播放 | 中国一级毛片 | 亚洲视频在线一区 | 亚洲国产欧美日韩 | 欧美一区二区三区在线观看视频 | 日韩视频网 | 三级色黄| www.91av在线 | 欧美激情啪啪 | 日韩在线视频中文字幕 | 精品在线看| 在线中文 | 精品欧美一区二区三区久久久 | 欧洲国产伦久久久久久久 | www.av在线| 亚洲视频在线看 | 久久99国产精品久久99果冻传媒 | 在线 丝袜 欧美 日韩 制服 | 国产在线精品一区 | 97热在线 | 亚洲欧美一区二区三区在线 | 国产精品一区二区三区四区 | 正在播放国产精品 | 国产精品1区2区 | 日韩精品亚洲专区在线观看 | 日本不卡高字幕在线2019 | 81精品国产乱码久久久久久 | 成人在线一区二区 | 中文字幕在线永久 | 国产自产才c区 | www.成人| 国产精品久久婷婷六月丁香 | 美女视频一区 | 亚洲一区视频 | 精品美女一区 | 成人亚洲视频 | 国产在线精品二区 | 一级一片免费视频 | 亚洲国产精品人人爽夜夜爽 | 91精品国产综合久久久久久 | 成人免费毛片嘿嘿连载视频 | 国产女无套免费网站 | 成人免费高清视频 | 麻豆一区一区三区四区 | 久久久精品影院 | 久久久久久久国产精品 | 久久精品国产免费 | 国产精品日日夜夜 | 成人精品| 日本黄色毛片 | 欧美一区二区三区在线观看视频 | 免费视频爱爱太爽了 | 日韩av一区在线 | 九九综合 | 国产精品久久久久aaaa九色 | 亚洲成人aaa | 国产色视频网站 | 毛片综合| 在线色网站 | 国产精品国产三级国产aⅴ中文 | 午夜精品一区二区三区四区 | 精品中文字幕在线 | 欧美一区 | 欧美成人高清视频 | 丁香五月亚洲综合在线 | 视频一区中文字幕 | 日韩av一级片 | 国产午夜精品在线 | 亚洲一区中文字幕在线观看 | 99久久精品免费看国产四区 | 夜夜骑日日操 | 亚洲欧美激情精品一区二区 | 美女操网站 | 欧美一级视频 | 日本三级电影天堂 | 久久久久国产一级毛片 | 欧美视频精品 | 在线亚洲一区 | 九色91视频 | 综合一区二区三区 | 日韩专区一区二区三区 | 久久久久一区二区 | 亚洲综合一区二区三区 | 四季久久免费一区二区三区四区 | 亚洲成av人影片在线观看 | 国产做a | 久久久国产精品 | 亚洲国产精品一区 | 在线激情视频 | 91久草视频 | 国产美女久久久 | 激情网站免费观看 | 精品电影| 国产在线激情视频 | 91无吗| 黄色在线免费 | 亚洲精品久久久久999中文字幕 | 日韩成人影院 | 国产人妖一区二区 | 91超碰在线观看 | 国产黄色免费视频 | 国产精品一区二区av | 精品在线一区 | 国产精品高潮呻吟久久av野狼 | 日本精品一区 | 情五月 | 一级片日韩 | 91短视频版在线观看www免费 | 欧美激情在线狂野欧美精品 | 成人在线观看免费视频 | 伊人夜夜躁av伊人久久 | 国产午夜精品一区二区三区嫩草 | 国产成人 综合 亚洲 | 在线观看免费av网站 | 美女黄网 | 国产超碰人人模人人爽人人添 | 久久爱综合网 | 精品久久一区二区三区 | 久久精品视 | 欧洲亚洲视频 | 亚洲国产精品99久久久久久久久 | 国产一区二区精品在线观看 | 国产三级网站 | 欧美精品在线免费观看 | 成人欧美 | 国产精品久久免费观看spa | 欧美a级成人淫片免费看 | 91成人一区 | 国产精品国产精品国产专区不卡 | 天天干天天操天天干 | 成人中文字幕在线 | 国产精品成人国产乱一区 | 国产乡下妇女做爰视频 | 91亚洲精 | 日韩一区二区三区在线看 | 天堂av在线免费观看 | 69免费视频 | 天天看天天摸天天操 | 亚洲福利一区 | 国产一区二区三区四区在线观看 | 中文字幕亚洲欧美日韩在线不卡 | 91日日| 国产久精品| 久久亚洲一区二区三区四区五区高 | 色呦呦网站在线观看 | 免费观看一级特黄欧美大片 | 婷婷色av | 亚洲第一区国产精品 | 国产精品久久久久久久粉嫩 | 国产1区在线观看 | 在线看欧美 | 国产欧美视频在线 | 日韩精品久久久久久 | 国产成人在线视频 | 成人欧美一区二区三区黑人孕妇 | 久久com| 伊人久久综合 | 欧美在线视频不卡 | 国产精品久久久久久 | 日韩成人片 | 午夜免费一区二区播放 | 久久久欧美| 欧美理论片在线观看 | 欧美精品1区2区3区 欧美视频在线一区 | 午夜成人免费视频 | 精品久久久久久久久久久 | 免费av电影观看 | 欧美天堂 | 中文字幕一二三区 | 国产精品高潮呻吟久久av野狼 | 999在线观看精品免费不卡网站 | 中文字幕精品一区久久久久 | 一区网站 | 日本综合色 | 久久99精品久久久久久青青日本 | 99在线免费视频 | 奇米影视首页 | 成人在线一区二区 | 日韩中文字幕免费观看 | 国产精品黄视频 | 国产精品一区二区三区在线 | 亚洲国产成人在线视频 | 亚洲精品在线视频 | 欧美日韩亚洲一区二区 | 日韩小视频网站 | 国产精品第一国产精品 | 91小视频| ririsao久久精品一区 | 国产精品成人在线观看 | 久草青青 | 不卡视频一区 | 99视频网站| 91亚色| 国产成人精品一区二区三区在线 | 国产成人自拍一区 | 天堂资源| 视频一区在线 | 亚洲精品影院 | 色综合色综合 | 综合色九九| 久久亚洲国产精品日日av夜夜 | 羞羞视频免费观 | 国产亚州av| 成人免费在线电影 | 99久久夜色精品国产亚洲1000部 | 伊人久久综合 | 亚洲精品久久久久久久久久久 | 冷水浴在线观看 | 97在线视频免费 | 天堂中文av | 中文字幕亚洲一区 | 日韩污视频在线观看 | 国产精品毛片 | 亚洲成人高清 | 国产成人免费视频网站视频社区 | www.久久.com| 亚洲免费视频网址 | 成人国产精品久久久 | 亚洲精品视频免费观看 | 91视频.www | 午夜视频在线观看网址 | 一级免费片| 欧美黄 片免费观看 | 日韩欧美精品在线 | 久久久久久久久久久久久九 | 精品国产影院 | av官网| 国产精品毛片一区二区三区 | 伊人色综合久久久天天蜜桃 | 久久精品欧美 | 免费三片在线观看网站 | 一区二区三区中文字幕 | 亚洲一区二区三区免费 | 亚洲国产情侣自拍 | 风间由美一区二区三区在线观看 | 午夜免费影院 | 永久av| 二区欧美 | 国产精品一区二区三区免费视频 | 国产一级免费视频 | 国产精品久久久久国产a级 99精品欧美一区二区三区综合在线 | 可以在线看的黄色网址 | 中文字幕在线一区二区三区 | 国产精品久久精品 | 国产精品久久国产精品 | 亚洲狠狠爱 | 亚欧洲精品视频在线观看 | 91久久久久久久久 | 国产97色在线 | 亚洲 | 色视频久久| 久久国产一区二区 | 日视频 | 欧美精品一区久久 | 九九热有精品 | 九九综合 | 色综久久| 成人精品久久久 | 欧美一级黄色片免费看 | 99精品福利视频 | 亚洲久久久久 | 国产成人在线视频 | 国产噜噜噜噜噜久久久久久久久 | 亚洲一区二区中文字幕 | 欧美高清成人 | 精品免费国产 | 自拍视频在线 | 国产欧美日韩一区二区三区 | 欧美一级淫片免费视频黄 | 在线免费观看黄 | 亚洲精品一区二三区不卡 | 蜜月久久99静品久久久久久 | 7799精品视频天天看 | 99精品久久 | 91久久国产精品 | 国产成人一区 | 91久久 | 黄色网址免费在线 | 亚洲精品三级 | √天堂在线 | 欧美午夜在线观看 | 天天插天天操 | 久草新免费 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 在线中文字幕av | 天天久久 | 日韩在线一区二区 | 99riav国产一区二区三区 | 二区在线视频 | 91免费视频在线 | 91在线视频免费观看 | 成人综合在线观看 | 婷婷五月在线视频 | 国产一区二区三区精品久久久 | 色欧美日韩 | 日韩一区高清视频 | 亚洲免费一区 | 精品久久久久一区二区国产 | av网站免费在线 | 伊人久麻豆社区 | 国产精品99久久久久久www | 欧美在线 | 国产一区91 | 国产精品一二三区 | 久久久美女 | 欧美日韩成人免费 | 蜜桃av网址 | 欧美精品一区二区三区手机在线 | 草久网 | 亚洲综合大片69999 | 国产精品一区二区三区四区 | 国产精品久久久久久久久免费桃花 | 日韩在线一区二区 | 制服 丝袜 激情 欧洲 亚洲 | 国产精品福利在线 | 一本岛在线视频 | 欧美精品亚洲精品 | 亚洲精品久久久久久久久久久久久 | 日韩视频一区 | 国产精品精品 | 久久久久久久av | 久久国产精品久久久久久电车 | 午夜精品久久久久久久白皮肤 | 日韩毛片免费看 | 亚洲国产精品久久 | 久久精彩视频 | 一区二区三区国产视频 | 中文字幕 在线观看 | 亚洲欧美日韩国产综合精品二区 | 欧美福利电影在线观看 | 欧美激情一区二区三区四区 | 日日操操 | 一级毛片免费播放 | 精品国产一区二区三区性色av | 日韩美香港a一级毛片免费 国产综合av | 久久久久国产一区二区三区四区 | 99综合 | 理论片87福利理论电影 | av中文在线| 视频在线一区 | 国产精品永久 | 成人免费高清视频 | 亚洲视频在线播放 | 美国特级a毛片免费网站 | 九九热在线免费视频 | 精品伊人 | 国产精品免费av | 亚洲精品免费在线观看 | 欧美 日韩 国产 在线 | 欧美区国产区 | 国产一区二区三区精品久久久 | 精品久久久久久亚洲精品 | 国产精品久久久久久久久久妇女 | 成人欧美| 欧美14一18处毛片 | 97久久精品午夜一区二区 | 黄色网址大全在线观看 | 国产精品高潮呻吟 | 中文在线一区二区 | 久久久久久九九九九九九 | 日本精品视频在线观看 | 黄色片在线免费看 | 国产色在线 | www.涩涩视频 | 色成人免费网站 | 国产在线不卡 | 欧美精品一区自拍a毛片在线视频 | 日韩精品一区二区三区在线观看 | 久久久网| 久久91视频| 99草草| 国产一区二区自拍 | av在线免费观看网站 | www.欧美 | av免费观看网站 | 久久亚洲国产精品 | 国产综合久久 | 91最新网站 | 91精品国产高清一区二区三区 | 日韩精品免费 | 亚洲电影一区二区 | 日韩素人一区二区三区 | 亚洲国产高清视频 | 日日摸夜夜添夜夜添亚洲女人 | 91社区在线高清 | 男人天堂a | 日本一区二区三区在线视频 | 国产伦精品一区二区三区四区视频_ | 国产精品久久国产精品 | 久久精品一级 | 国产成人一区二区三区 | 国产最新一区 | 成人av免费在线 | 国产精品毛片久久久久久久 | 91婷婷射| 欧美视频中文字幕 | 97国产资源| 艳妇荡乳豪妇荡淫 | 天天干狠狠干 | 国产精品福利一区 | 91精品国产99久久久 | 日日夜夜天天 | 日韩视频三区 | 好看的一级毛片 | 欧美一级片毛片免费观看视频 | 成人亚洲一区 | 亚洲综合无码一区二区 | 天堂国产| 黄色国产精品 | 成人免费视频网站在线看 | 一区二区国产在线 | 日韩精品视频在线 | 范冰冰一级做a爰片久久毛片 | 亚洲免费在线视频 | 精品视频在线播放 | 91九色视频 | 巨大黑人极品videos精品 | www.精品 | 亚洲人成在线观看 | 日韩电影免费在线观看中文字幕 | 美日韩成人 | 亚洲精品粉嫩美女一区 | 色偷偷噜噜噜亚洲男人 | 日日骑夜夜操 | 久久精品99 | 97免费在线观看视频 | 久久久精品一区二区 | av网站免费在线观看 | 成人午夜sm精品久久久久久久 | 国产精品成人一区二区三区夜夜夜 | 久久精品国产99精品国产亚洲性色 | 一区二区三区四区在线 | 国产精品久久久久免费a∨ 欧洲精品一区 | 国产在线视频网 | 日日操视频 | 看a网址 | 日韩毛片免费视频一级特黄 | 成人欧美一区二区三区黑人孕妇 | 在线观看成人小视频 | 亚洲视频免费在线观看 | av男人电影天堂 | 亚洲视频精品一区 | 中文字幕av一区二区三区 | av日韩在线播放 | 久久白虎| 自拍偷拍专区 | 99视频在线 | 狠狠狠色丁香婷婷综合久久五月 | 韩日精品一区 | 国产精品无码久久久久 | 伊人网视频 | 狠狠久| 国产成人精品av | 亚洲二区在线播放 | 久久精品99| 日韩欧美h | 国产精品久久久久久久久 | 国产做a爰片久久毛片a我的朋友 | 青青草精品 | 久久精品一 | 国产一级免费在线观看 | 久久久久久一区 | 免费精品视频 | 亚洲伊人久久综合 | 久久久久久久久久久亚洲 | 国产区最新| 国产激情在线视频 | 色人人 | 日韩一区二区福利 | 久久久久久免费免费 | 免费看片一区二区三区 | 欧美一区二区三区精品 | 日韩免费在线观看视频 | 国产在线a| 91在线观看视频 | 亚洲欧美一区二区三区在线 | 91精品国产欧美一区二区成人 | 日韩精品专区 | 欧美中文字幕在线观看 | 色综合国产 | 可以免费看黄的网站 | 草久在线视频 | 国产大学生情侣呻吟视频 | 色婷婷综合网 | 久久精品成人免费视频 | 国产综合精品 | 久在线视频| 午夜精品一区 | 欧美福利在线观看 | 亚洲美女精品视频 | 国产亚洲精品久久久久久久久 | 亚洲高清在线观看 | 亚洲欧美高清 | 成人精品一区二区三区 | 国产精品毛片一区二区在线看 | 精品视频一区二区 | 国产精品毛片一区二区在线看 | 黄色在线免费观看 | 久久久精品一区二区 | 久久久婷婷 | 在线免费观看黄 | 毛片搜索| 天天操综合网 | 欧洲视频一区二区三区 | 欧美午夜视频在线观看 | 这里只有精品在线 | 人人干美女 | 国产成人a亚洲精品 | 操片 | 不卡一二区 | 国内精品视频一区二区三区 | av中文字幕在线 | 成人免费网站视频 | 伊人春色成人 | 精品人成 | 国产 日韩 一区 | 久久国产美女 | 国产精品乱码一二三区的特点 | 6080夜射猫| t66y最新地址一地址二69 | 久久久久网站 | 欧美激情一区 | 国产在线观看一区 | 欧美日韩视频 | 欧美一级在线观看视频 | 日韩精品视频在线观看免费 | 欧美精品一区二区在线观看 | 欧洲另类在线1 | 日韩在线资源 | 国产精品一区二区免费 | 精品久久久精品 | 国产欧美精品区一区二区三区 | 成人国产在线观看 | 91精品国产综合久久久蜜臀粉嫩 | 日本黄色短片 | 中文字幕在线免费视频 | 成人激情视频在线 | 狠狠操夜夜操 | 精品三区在线观看 | 亚洲+变态+欧美+另类+精品 | 日韩欧美在线视频观看 | 亚洲不卡免费视频 | 欧美日韩在线视频观看 | 国产在线看h | 亚洲一区二区免费在线观看 | 精品久久一区二区三区 | 亚洲精品综合中文字幕 | 国产成人精品一区二区三区四区 | 狠狠人人 | 国产一区二区影院 | 日夜夜精品 | 欧美一区二区三区在线观看 | 成人免费共享视频 | 国产情侣激情 | 毛片免费观看 | 久久这里只有精品免费 | 在线看国产 | 国产精品日产欧美久久久久 | 亚洲人成中文字幕在线观看 | 久久国产精品久久久久久电车 | www国产高清 | 操片| 最新av中文字幕 | 精品视频免费在线 | 欧美日韩亚洲国产综合 | 国产一区二区在线电影 | 亚洲一区二区三区免费看 | 一区二区三区免费网站 | 国产精品18久久久久久久久久久久 | 亚洲欧美中文日韩在线v日本 | 国产日韩精品一区二区在线观看播放 | 国产一二三区在线播放 | 欧美福利视频 | 黄色毛片免费看 | 91免费视频在线 | 91在线导航| 日韩在线免费 | 国产精品久久久久久久午夜片 | 欧美午夜精品久久久久久人妖 | 三级黄色在线视频 | 欧美成人精品在线观看 | 亚洲免费视频一区二区 | 精品国产一区二区三区不卡蜜臂 | 黄色免费在线观看网址 | 免费看一区二区三区 | 国产传媒日韩欧美 | 国产精品99久久久久久久vr | 99这里只有精品视频 | av大片在线 | 成全视频免费观看在线看黑人 | 国产福利91精品一区二区三区 | 国产午夜久久 | 日日天天 | 国产一区免费 |