GithubHelp home page GithubHelp logo

xingxingzaixian / django-vue3.2-online-exam Goto Github PK

View Code? Open in Web Editor NEW
135.0 4.0 27.0 1.63 MB

在线考试系统,开发中......

Home Page: http://exam.xingxingzaixian.fun/#/exam/list

License: MIT License

Shell 0.59% Dockerfile 0.13% Python 31.37% JavaScript 2.02% HTML 0.26% Vue 42.41% TypeScript 22.28% Less 0.94%
django django-rest-framework element-plus pinia typescript vite vue3

django-vue3.2-online-exam's Introduction

django-vue3.2-online-exam

有一些小伙伴找我要数据库的SQL文件,如果你看到这个项目,我默认你是会Django的,既然会Django我觉得就不应该问这个问题了,Django的数据库迁移是必须要会滴,我稍微改了一下下面的步骤,相信会Django的同学大家应该都能理解。如果你是一个纯前端的同学,不想运行后端服务器,那么也可以直接配我搭建的后台服务器地址:http://apiexam.xingxingzaixian.fun

介绍

基于 Django+Vue3.2+TypeScript 的在线考试系统,在线体验:http://small_bud_star.gitee.io/django-vue3.2-online-exam,欢迎大家提issue

功能简介

  • 支持单选题、多选题、判断题
  • 支持学生(student)、教师(teacher)、管理员(admin)三种角色
    • 学生:参加考试和查看我的考试
    • 教师:学生的所有权限+创建/编辑题目+创建/编辑考试
    • 管理员:教师的所有权限+管理用户

软件架构

前后端分离,前段组件化,方便二次开发;后端

  • 后端采用DjangoRestFrameWork+CoreApi+JWT校验,根据不同用户的权限返回给用户不同的数据
  • 前端采用Vue3.2+Element-Plus+TypeScript,组件化拆分,方便维护和二次开发

使用教程

  • 1.下载代码

    git clone [email protected]:xingxingzaixian/django-vue3.2-online-exam.git
  • 2.初始化环境

    安装MySQL数据库,创建名为exam的数据库,并在Django的settings.py文件中配置好数据库信息。

  • 3.初始化Python环境 必须先使用pip命令安装pipenv虚拟环境管理包,在Pipfile文件里面我配置的是3.8.11,如果你自己的Python版本不一样,修改一下文件里面的配置,然后执行下面的步骤。

    # 进入后端目录
    cd backend
    
    # 安装项目依赖库
    pipenv install
    
    # 生成数据库迁移文件
    pipenv run makemigrations
    
    # 执行数据库迁移,这一步会生成所有的表
    pipenv run migrate
  • 4.启动后端

    执行完上面的安装命令后,再执行 pipenv run dev,就启动了后端,在浏览器端访问 http://localhost:9527/docs 即可看到后端的 API 界面

    API 文档

  • 5.启动前端

    • 进入到前端代码路径 cd frontend
    • 安装依赖 yarn install
    • 启动前端 yarn run dev
  • 6.部署完毕,查看效果

    打开 http://localhost:8000 或者 http://本机ip:8000 即可查看演示效果

功能图示

前后端功能目前均正在重构中

  • 考试列表 考试列表

  • 题目列表

  • 创建题目

  • 选项列表

  • 编辑选项

功能开发中

  • 前端中后台框架开发
  • 题目列表显示界面
  • 选项列表显示界面
  • 题目新增、编辑、删除
  • 选项新增、编辑、删除
  • 考试卡片显示界面
  • 考试新增、编辑、删除
  • 封装Table和Tool组件
  • 封装wangEditor组件
  • 封装图片编辑组件
  • Form表单校验
  • 后端权限设计

更新记录

更新日志

诚邀

突然间发现自己的设计感贼差,经常为了考虑一个界面该怎么展示而头疼,诚邀有志之士加入,哪怕只提供一个灵感也好。

django-vue3.2-online-exam's People

Contributors

xingxingzaixian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

django-vue3.2-online-exam's Issues

开源协议

大佬,这个项目的开源协议是?能否商用?

pipenv run migrate报错缺失tbl_user表项问题

  1. 首先是有一个报错:
    mysqlclient 1.4.3 or newer is required; you have 1.0.3
    什么原因我不懂总之改下这个backend/backend/init.py添加一行就可以了
    image
    可是这是为什么呢?解决链接原文在这里
    https://stackoverflow.com/questions/55657752/django-installing-mysqlclient-error-mysqlclient-1-3-13-or-newer-is-required

解决完成编辑.env得数据库连接配置后执行:

[root@bf179903968b backend]# pipenv run makemigrations
Loading .env environment variables...
No changes detected

没有问题成功执行

但是执行数据库迁移生成时报错了:

[root@bf179903968b backend]# pipenv run migrate
Loading .env environment variables...
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, exam, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying admin.0001_initial...Traceback (most recent call last):
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 73, in execute
    return self.cursor.execute(query, args)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.OperationalError: (1824, "Failed to open the referenced table 'tbl_user'")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/core/management/__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/core/management/base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/core/management/base.py", line 398, in execute
    output = self.handle(*args, **options)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/core/management/base.py", line 89, in wrapped
    res = handle_func(*args, **kwargs)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/core/management/commands/migrate.py", line 244, in handle
    post_migrate_state = executor.migrate(
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/db/migrations/executor.py", line 117, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/db/migrations/executor.py", line 147, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/db/migrations/executor.py", line 230, in apply_migration
    migration_recorded = True
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/db/backends/base/schema.py", line 118, in __exit__
    self.execute(sql)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/db/backends/base/schema.py", line 145, in execute
    cursor.execute(sql, params)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/db/backends/utils.py", line 98, in execute
    return super().execute(sql, params)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/db/backends/utils.py", line 66, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/db/utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 73, in execute
    return self.cursor.execute(query, args)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "/root/.local/share/virtualenvs/backend-uuyuvXgx/lib/python3.8/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
django.db.utils.OperationalError: (1824, "Failed to open the referenced table 'tbl_user'")

说无法创建tbl_user得意思大概,但是我看代码里又是有定义的,这是为什么啊,执行该命令后只有这三个库出现了:
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.