我们开始讲解“Django框架实现在线考试系统的示例代码”的完整攻略。这里,我将分为两个示例进行讲解。
示例1 - 简单的在线考试系统
1. 安装 Django
首先,你需要安装 Django。你可以通过以下命令来进行安装:
pip install Django
2. 创建 Django 项目并创建 App
接下来,我们需要创建一个 Django 项目并创建一个 App 用于实现在线考试系统。
django-admin startproject exam_system
cd exam_system
python manage.py startapp exam
3. 编写模型类
在 “exam/models.py” 中,编写模型类:
from django.db import models
class Subject(models.Model):
name = models.CharField(max_length=100) # 考试科目名称
class Question(models.Model):
content = models.TextField() # 题目内容
answer = models.CharField(max_length=50) # 题目答案
subject = models.ForeignKey(Subject, on_delete=models.CASCADE) # 题目对应考试科目
4. 编写视图函数
在 “exam/views.py” 中,编写视图函数:
from django.shortcuts import render
from .models import Subject, Question
def index(request):
subjects = Subject.objects.all() # 获取所有考试科目
return render(request, 'index.html', {'subjects': subjects})
def subject(request, subject_id):
subject = Subject.objects.get(id=subject_id) # 获取考试科目
questions = Question.objects.filter(subject=subject) # 获取对应考试科目的题目
return render(request, 'subject.html', {'subject': subject, 'questions': questions})
5. 编写模板文件
在 “exam/templates” 中,编写模板文件:
index.html
{% for subject in subjects %}
<a href="{% url 'subject' subject.id %}">{{ subject.name }}</a>
{% endfor %}
subject.html
<h3>{{ subject.name }}</h3>
<form method="post" action="{% url 'score' subject.id %}">
{% csrf_token %}
{% for question in questions %}
{{ question.content }}:<input type="text" name="q{{ question.id }}" /><br>
{% endfor %}
<button type="submit">提交</button>
</form>
6. 编写 URLconf
在 “exam/urls.py” 中,编写 URLconf:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('subject/<int:subject_id>/', views.subject, name='subject'),
path('score/<int:subject_id>/', views.score, name='score'),
]
7. 编写最终的视图函数
在 “exam/views.py” 中,编写最终的视图函数,用于计算成绩:
def score(request, subject_id):
subject = Subject.objects.get(id=subject_id) # 获取考试科目
questions = Question.objects.filter(subject=subject) # 获取对应考试科目的题目
score = 0
for question in questions:
answer = request.POST.get('q{}'.format(question.id)) # 获取用户提交的答案
if answer == question.answer:
score += 1
return render(request, 'score.html', {'score': score})
8. 运行测试
最后一步,我们需要运行测试来验证该网站是否正常工作。在命令行中输入以下命令:
python manage.py runserver
打开浏览器,输入 http://127.0.0.1:8000/, 就能看到我们的在线考试系统啦!
示例2 - 基于 Django REST framework 的在线考试系统
1. 创建 Django 项目并设置虚拟环境
首先,我们需要创建一个虚拟环境,并激活该虚拟环境,然后再进行 Django 项目的创建。你可以通过以下命令来进行设置:
virtualenv env # 创建虚拟环境
source env/bin/activate # 激活虚拟环境
pip install django==3.1 # 安装 Django
pip install djangorestframework # 安装 Django REST framework
django-admin startproject exam_system # 创建 Django 项目
cd exam_system
python manage.py startapp exam # 创建 App
2. 配置数据库
在 “exam_system/settings.py” 文件中,修改数据库配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'exam_system',
'USER': 'root',
'PASSWORD': 'root',
'HOST': '',
'PORT': '',
}
}
3. 编写模型类
在 “exam/models.py” 中,编写模型类:
from django.db import models
class Subject(models.Model):
name = models.CharField(max_length=100) # 考试科目名称
class Question(models.Model):
content = models.TextField() # 题目内容
answer = models.CharField(max_length=50) # 题目答案
subject = models.ForeignKey(Subject, on_delete=models.CASCADE) # 题目对应考试科目
4. 配置 Django REST framework
在 “exam_system/settings.py” 文件中,配置 Django REST framework:
INSTALLED_APPS = [
'rest_framework',
'exam',
]
5. 编写 Serializer
在 “exam/serializers.py” 中,编写 Serializer:
from rest_framework import serializers
from .models import Subject, Question
class QuestionSerializer(serializers.ModelSerializer):
class Meta:
model = Question
fields = ['content', 'answer']
class SubjectSerializer(serializers.ModelSerializer):
questions = QuestionSerializer(many=True, read_only=True)
class Meta:
model = Subject
fields = ['id', 'name', 'questions']
6. 编写 ViewSet
在 “exam/views.py” 中,编写 ViewSet:
from rest_framework import viewsets
from .models import Subject, Question
from .serializers import SubjectSerializer
class SubjectViewSet(viewsets.ModelViewSet):
queryset = Subject.objects.all()
serializer_class = SubjectSerializer
7. 编写 URLconf
在 “exam/urls.py” 中,编写 URLconf:
from django.urls import path, include
from rest_framework import routers
from .views import SubjectViewSet
router = routers.DefaultRouter()
router.register(r'subjects', SubjectViewSet)
urlpatterns = [
path('', include(router.urls)),
]
8. 运行测试
最后一步,我们需要运行测试来验证该网站是否正常工作。在命令行中输入以下命令:
python manage.py runserver
打开浏览器,输入 http://127.0.0.1:8000/subjects/, 就能看到我们的基于 Django REST framework 的在线考试系统啦!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django框架实现在线考试系统的示例代码 - Python技术站