Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统


Posted in Python onSeptember 05, 2019

1 准备工作

1.1 环境搭建

1.1.1 安装python3.6

python安装官网

1.1.2 安装django2.2

pip install django(==2.2.0) //不加版本默认安装最新版

1.1.3 安装pycharm(社区版,官网下载安装即可)

在安装完成后要配置好需要的第三方库:(pip下载,推荐在pycharm下也配置虚拟环境)

Django2.2

连接mysql需要的库:PyMySQL, mysql, mysqlclinet

验证码用到的库:django-simple-captcha(只需在虚拟环境下配置)

(由于下载库较多,忘记用到的库,下附截图)

Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统

1.1.4 安装数据库,

我使用的是MySQL,推荐安装界面管理文件(我使用的是MySQLWorkbench)数据库配置,settings.py文件

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME':'cet',    #数据库名字
 'USER':'root',   #登陆数据库的用户名
 'PASSWORD':'123',   #登陆数据库的密码
 'HOST':'localhost',   #数据库的ip地址
 'PORT':'3306',   #ip地址的端口号,默认(3306)
 }
}

__init__.py里面导入pymysql

import pymysql pymysql.install_as_MySQLdb()

1.2 创建django项目及app

1.2.1 创建指令

django-admin startproject project_name #创建项目
python manage.py startapp app_name  #创建app(可能会报错)
#上面创建app失败用下面这个指令
django-admin startapp app_name 
 1.2.2 注册app
INSTALLED_APPS = [
 'django.contrib.admin',  
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'login',   #登录注册
 'captcha',  #验证码
 'home',   #报名主页
]

1.4 更改时区和语言

settings.py文件中,将默认改为亚洲/上海和中文

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False

1.5 数据库迁移

更改models.py后,要将更改同步到数据库之中,这时就要用到数据库迁移指令(若迁移失败:no changes问题)。

python manage.py makemigrations
python manage.py migrate

1.6 创建超级管理员

命令行冲使用指令创建管理员账号用于使用django自带的框架。

python manage.py createsuperuser

1.7 运行准备

添加端口号:

Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统

Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统

2 注册登录模块

(我将其放在了app名为login里面)

2.1 数据库模型设计

特殊参数说明:verbose_name——用于修改django框架各表成员的名字(相当于副名,只用于显示),其他可以从文章

开头推荐的博客了解。

#login/models.py
from django.db import models
# Create your models here.
class User(models.Model):
 '''用户表'''
 gender = (
 ('male', '男'),
 ('female', '女'),
 )
 name = models.CharField(verbose_name="用户名", max_length=128, unique=True) # unique表示唯一
 password = models.CharField(verbose_name="密码", max_length=256)
 email = models.EmailField(verbose_name="邮箱", unique=True)
 sex = models.CharField(verbose_name="性别", max_length=32, choices=gender, default='男')
 c_time = models.DateTimeField(auto_now_add=True)
 def __str__(self):
 return self.name
 #用于将django自带管理员端汉化
 class Meta:
 ordering = ['c_time']
 verbose_name = '用户'
 verbose_name_plural = '用户'

2.2 在admin中注册模型

#login/admin.py
from django.contrib import admin
# Register your models here.
from . import models
admin.site.register(models.User)

2.3 创建表单

在我们创建数据库用户表后,采用表单验证前端的数据并进行存储到数据库中。

#login/forms.py
from django import forms
from captcha.fields import CaptchaField
class user_entry(forms.Form):
 user_name = forms.CharField(label="用户名", max_length=128, widget=forms.TextInput(attrs={'class': 'form-control'}))
 user_true_name = forms.CharField(label="真实姓名", max_length=128,widget=forms.TextInput(attrs={'class': 'form-control'}))
 user_id = forms.CharField(label="身份证号", max_length=18, widget=forms.TextInput(attrs={'class': 'form-control'}))
 email = forms.EmailField(label="邮箱地址", widget=forms.EmailInput(attrs={'class': 'form-control'}))
 exam_point = forms.CharField(label="考点", max_length=128, widget=forms.TextInput(attrs={'class': 'form-control'}))
class user_datas(forms.Form):
 email = forms.EmailField(label="邮箱地址", widget=forms.EmailInput(attrs={'class': 'form-control'}))
 user_name = forms.CharField(label="用户名", max_length=128, widget=forms.TextInput(attrs={'class': 'form-control'}))
 user_true_name = forms.CharField(label="真实姓名", max_length=128, widget=forms.TextInput(attrs={'class': 'form-control'}))
 user_id = forms.CharField(label="身份证号", max_length=18, widget=forms.TextInput(attrs={'class': 'form-control'}))
 # user_img =
 user_school = forms.CharField(label="所在学校", max_length=128, widget=forms.TextInput(attrs={'class': 'form-control'}))
 # user_f_score = forms.CharField(label="四级成绩", max_length=10, widget=forms.TextInput(attrs={'class': 'form-control'}))
 # user_s_score = forms.CharField(label="六级成绩", max_length=10, widget=forms.TextInput(attrs={'class': 'form-control'}))

2.4 路由及视图设计

2.4.1 路由设计

由于登陆注册使用的路径不多,就将其全放在项目目录下的urls.py文件,当然也可以采用项目和app相结合。

#项目名/urls.py
from django.contrib import admin
from django.urls import path,include
from login import views
urlpatterns = [
 path('', views.index),  #修改端口默认主页
 path('admin/', admin.site.urls), #管理员端
 #登录注册
 path('index/', views.index),
 path('check/', views.check),
 path('login/', views.login),
 path('register/', views.register),
 path('logout/', views.logout),
 #使用验证码
 path('captcha', include('captcha.urls')),
 #报名app路由
 path('homepage/',include('home.urls')),
]

2.4.2 试图设计

#login/views.py
from django.shortcuts import render, redirect
from . import models
from .forms import UserForm,RegisterForm
from home.models import user_data
# Create your views here.
def check(request):
 pass
 return render(request, 'login/hello.html')
def index(request):
 pass
 return render(request, 'login/index.html')
#加入sesson
def login(request):
 #不允许重复登录
 if request.session.get('is_login', None):
 return redirect('/index')
 if request.method == "POST":
 login_form = UserForm(request.POST)
 message = "请检查填写的内容!"
 if login_form.is_valid():
  username = login_form.cleaned_data['username']
  password = login_form.cleaned_data['password']
  try:
  user = models.User.objects.get(name=username)
  if user.password == password:
   #往session字典内写入用户状态和数据
   request.session['is_login'] = True
   request.session['user_id'] = user.id
   request.session['user_name'] = user.name
   return redirect('/index/')
  else:
   message = "密码不正确!"
  except:
  message = "用户不存在!"
 return render(request, 'login/login.html', locals())
 login_form = UserForm()
 return render(request, 'login/login.html', locals())
def logout(request):
 if not request.session.get('is_login', None):
 # 如果本来就未登录,也就没有登出一说
 return redirect("/index/")
 request.session.flush()
 # 或者使用下面的方法
 # del request.session['is_login']
 # del request.session['user_id']
 # del request.session['user_name']
 return redirect("/index/")
def register(request):
 if request.session.get('is_login', None):
 # 登录状态不允许注册。
 return redirect("/index/")
 if request.method == "POST":
 register_form = RegisterForm(request.POST)
 message = "请检查填写的内容!"
 if register_form.is_valid(): # 获取数据
  username = register_form.cleaned_data['username']
  password1 = register_form.cleaned_data['password1']
  password2 = register_form.cleaned_data['password2']
  email = register_form.cleaned_data['email']
  sex = register_form.cleaned_data['sex']
  if password1 != password2: # 判断两次密码是否相同
  message = "两次输入的密码不同!"
  return render(request, 'login/register.html', locals())
  else:
  same_name_user = models.User.objects.filter(name=username)
  if same_name_user: # 用户名唯一
   message = '用户已经存在,请重新选择用户名!'
   return render(request, 'login/register.html', locals())
  same_email_user = models.User.objects.filter(email=email)
  if same_email_user: # 邮箱地址唯一
   message = '该邮箱地址已被注册,请使用别的邮箱!'
   return render(request, 'login/register.html', locals())
  message = "注册成功!"
  # 当一切都OK的情况下,创建新用户
  # 创建用户信息//有问题:放在创建用户表后面会出现DJANGO pymysql.err.IntegrityError:
  # (1062, "Duplicate entry '' for key 'user_name'")
  new_user_data = user_data.objects.create()
  new_user_data.user_name = username
  new_user_data.user_true_name = '无'
  new_user_data.user_id = '无'
  new_user_data.user_school = '无'
  # new_user_data.user_f_score = 425
  # new_user_data.user_s_score = 0
  new_user_data.save()
  #创建用户表
  new_user = models.User.objects.create()
  new_user.name = username
  new_user.password = password1
  new_user.email = email
  new_user.sex = sex
  new_user.save()
  return redirect('/login/') # 自动跳转到登录页面
 register_form = RegisterForm()
 return render(request, 'login/register.html', locals())

3 个人信息及报名管理

(我将其放在了app名为home里面)

3.1 数据库模型设计

#home/models.py
from django.db import models
# Create your models here.
class exam_entry_table(models.Model):
 #考点信息表
 exam_id = models.CharField(verbose_name="考试编号",max_length=10)
 exam_type = models.CharField(verbose_name="考试类别",max_length=128)
 exam_point = models.CharField(verbose_name="考点",max_length=128)
 exam_time = models.CharField(verbose_name="考试时间",max_length=128)
 number = models.IntegerField(verbose_name="容量")
 entry_number = models.IntegerField(verbose_name="已报名数量",default=0)
 def __str__(self):
 return self.exam_point
 class Meta:
 # ordering = ['c_time']
 verbose_name = '考点'
 verbose_name_plural = '考点信息表'
class user_entry_table(models.Model):
 #用户考试信息表
 email = models.EmailField(verbose_name="邮箱")
 exam_id = models.CharField(verbose_name="考试编号",max_length=10)
 exam_point = models.CharField(verbose_name="考点",max_length=128)
 def __str__(self):
 return self.email
 class Meta:
 # ordering = ['c_time']
 verbose_name = '用户考试信息'
 verbose_name_plural = '用户考试信息表'
class user_data(models.Model):
 #用户信息表
 user_name = models.CharField(verbose_name="用户名",max_length=128, unique=True)
 user_true_name = models.CharField(verbose_name="真实姓名",max_length=128, null=True)
 user_id = models.CharField(verbose_name="身份证号",max_length=18, null=True)
 # user_img =
 user_school = models.CharField(verbose_name="在读学校",max_length=128)
 user_f_score = models.IntegerField(verbose_name="四级成绩", default=0)
 user_s_score = models.IntegerField(verbose_name="六级成绩", default=0)
 def __str__(self):
 return self.user_name
 class Meta:
 # ordering = ['c_time']
 verbose_name = '用户名'
 verbose_name_plural = '用户信息表'

3.2 注册模型

#home/admin.py
from django.contrib import admin
# Register your models here.
from . import models
admin.site.register(models.exam_entry_table) #考点信息表
admin.site.register(models.user_entry_table) #用户考试信息表
admin.site.register(models.user_data)  #用户信息表

3.3 创建表单

#home/forms.py
from django import forms
from captcha.fields import CaptchaField
class UserForm(forms.Form):
 username = forms.CharField(label="用户名", max_length=128, widget=forms.TextInput(attrs={'class': 'form-control'}))
 password = forms.CharField(label="密码", max_length=256, widget=forms.PasswordInput(attrs={'class': 'form-control'}))
 captcha = CaptchaField(label='验证码')
class RegisterForm(forms.Form):
 gender = (
  ('male', "男"),
  ('female', "女"),
 )
 username = forms.CharField(label="用户名", max_length=128, widget=forms.TextInput(attrs={'class': 'form-control'}))
 password1 = forms.CharField(label="密码", max_length=256, widget=forms.PasswordInput(attrs={'class': 'form-control'}))
 password2 = forms.CharField(label="确认密码", max_length=256, widget=forms.PasswordInput(attrs={'class': 'form-control'}))
 email = forms.EmailField(label="邮箱地址", widget=forms.EmailInput(attrs={'class': 'form-control'}))
 sex = forms.ChoiceField(label='性别', choices=gender)
 captcha = CaptchaField(label='验证码')

3.4 路由及视图设计

3.4.1 路由设计

这里用到的路劲较为复杂,采用项目urls和app的urls结合起来避免项目的urls过于拥挤。

先修改项目的urls.py文件:

#项目名/urls.py
path('homepage/',include('home.urls')), #前面已经添加了,这里只做说明

再修改app中的urls.py文件:

#home/urls.py
from django.contrib import admin
from django.urls import path,include
from home import views
urlpatterns = [
 path('test/', views.test),
 path('my_data/',views.mydate),   #我的信息
 path('query_results/',views.query), #查询报告信息
 path('cet_4/',views.cet_4),   #四级报名
 path('cet_6/',views.cet_6),   #六级报名
 path('change_my_data/',views.updata),
]

3.4.2 试图设计

#home/views.py
from django.shortcuts import render, redirect
from . import models
from .forms import user_entry, user_datas
from django.http import HttpResponse,HttpResponseRedirect
# from django.contrib.auth.models import User
from login.models import User
# Create your views here.
def test(request):
 pass
 return render(request, 'home/test.html')
#我的信息
def mydate(request):
 username = request.session.get('user_name', None)
 account = User.objects.get(name=username)#用户登录注册表
 user = models.user_data.objects.get(user_name= username)
 return render(request,"home/myself.html",{"user":user, "account":account})
#修改我的信息
def updata(request):
 username = request.session.get('user_name', None)
 # print("-----------------------")
 # print(username)
 # print("-----------------------")
 user_da = models.user_data.objects.get(user_name=username)
 user = User.objects.get(name=username)#login_user表
 if request.method == "POST":
  userdata = user_datas(request.POST)
  # print(userdata)
  if userdata.is_valid():
   user_das = userdata.cleaned_data
   # user.user_name = user_da['user_name'] #用户无法修改用户名
   user.email = user_das['email']
   user_da.user_true_name = user_das['user_true_name']
   user_da.user_id = user_das['user_id']
   user_da.user_school = user_das['user_school']
   user_da.save()
   user.save()
   # 四六级成绩无法修改
   # user_datas.user_f_score = user_da['user_f_score']
   # user_datas.user_s_score = user_da['user_s_score']
   return redirect('/homepage/my_data/')
 else:
  userdata = user_datas(initial={"email":user.email,"user_name":user_da.user_name,"user_true_name":user_da.user_true_name,"user_id":user_da.user_id,"user_school":user_da.user_school})
  return render(request, 'home/change_mydata.html', {"userdata":userdata})
#查询考试信息 还没完成,优化,条件判断
def query(request):
 username = request.session.get('user_name',None)
 user = User.objects.get(name=username)
 #用于判断用户是否报名
 user_en = models.user_entry_table.objects.filter(email=user.email)
 # print("********************")
 # print(user_en)
 # print(user_en[0])
 if user_en:
  # print(len(user_en))
  if len(user_en)==1:
   user_entry = models.user_entry_table.objects.get(email=user.email)
   user_point = user_entry.exam_point
   user_eid = user_entry.exam_id
   exam_entry = models.exam_entry_table.objects.get(exam_point=user_point, exam_id=user_eid)
   return render(request, 'home/query1.html', {"exam_entry": exam_entry})
  else:
   user_entry4 = models.user_entry_table.objects.get(email=user.email, exam_id=0)
   user_entry6 = models.user_entry_table.objects.get(email=user.email, exam_id=1)
   user_point4 = user_entry4.exam_point
   user_point6 = user_entry6.exam_point
   exam_entry4 = models.exam_entry_table.objects.get(exam_point=user_point4, exam_id=0)
   exam_entry6 = models.exam_entry_table.objects.get(exam_point=user_point6, exam_id=1)
   return render(request, 'home/query2.html', {"exam_entry4": exam_entry4, "exam_entry6":exam_entry6})
 else:
  # message = "你还未报名!请先报名之后再来查看!"
  # return render(request, 'login/index.html', locals())
  user_da = models.user_data.objects.get(user_name=user.name)
  school = user_da.user_school
  if school=='无':
   message = "请先更新你的学校信息!"
   return render(request, 'login/index.html', locals())
  else:
   point = models.exam_entry_table.objects.filter(exam_point=school)
   if point:
    if len(point)==1:
     exam = models.exam_entry_table.objects.get(exam_point=school)
     return render(request, 'home/exam1.html', {"exam": exam})
    else:
     exam4 = models.exam_entry_table.objects.get(exam_point=school, exam_id=0)
     exam6 = models.exam_entry_table.objects.get(exam_point=school, exam_id=1)
     return render(request, 'home/exam2.html', {"exam4": exam4, "exam6": exam6})
   else:
    message="你的学校还未开放报名!详情请咨询学校相关部门!"
    return render(request, 'login/index.html', locals())
#四级报名
def cet_4(request):
 username = request.session.get('user_name', None)
 # 用户信息表,用户表,获取信息判断资格
 user_da = models.user_data.objects.get(user_name=username)
 user = User.objects.get(name=username)
 if request.method == "POST":
  cet4_form = user_entry(request.POST)
  if cet4_form.is_valid():
   # 四级考试对分数无要求
   # 只需要获取报考考点信息即可
   # email = cet4_form.cleaned_data['email']
   exam_id = '0'
   exam_point = cet4_form.cleaned_data['exam_point']
   #用与下面的考点判断
   point = models.exam_entry_table.objects.filter(exam_point=exam_point, exam_id='0')
   # 用与下面的是否重复报名判断
   entryer = models.user_entry_table.objects.filter(email=user.email, exam_id=exam_id)
   #判断个人信息是否完善
   if user_da.user_true_name=='无'or user_da.user_id=='无':
    message="请先完善个人真实信息之后再来报名!"
    return render(request, 'home/cet_4.html', locals())
   # 判断是否重复报名
   # print("判断是否重复报名")
   elif entryer:
    message = "请勿重复报名!"
    return render(request, 'home/cet_4.html', locals())
   elif point:
    # 考点存在
    # print("没有重复报名")
    message = "报名成功!请按时参加考试!"
    # 创建一条数据
    new_user = models.user_entry_table.objects.create()
    new_user.email = user.email
    new_user.exam_id = exam_id
    new_user.exam_point = exam_point
    new_user.save()
    # 考点容量减1,报考人数加1
    exam_entry = models.exam_entry_table.objects.get(exam_point=exam_point, exam_id=exam_id)
    exam_entry.number -= 1
    exam_entry.entry_number += 1
    exam_entry.save()
    return render(request, 'home/cet_4.html', locals())
   else:
    message = "该学校还未开放报名!详情请咨询学校相关部门!"
    return render(request, 'home/cet_4.html', locals())
 cet4_form = user_entry(initial={"email": user.email, "user_name": user_da.user_name, "user_true_name": user_da.user_true_name,
     "user_id": user_da.user_id})
 return render(request, 'home/cet_4.html', locals())
#六级报名:
def cet_6(request):
 username = request.session.get('user_name', None)
 # 用户信息表,用户表,获取信息判断资格
 user_da = models.user_data.objects.get(user_name=username)
 user = User.objects.get(name=username)
 if request.method == "POST":
  cet6_form = user_entry(request.POST)
  if cet6_form.is_valid():
   # 只需要获取报考考点信息即可
   # email = cet4_form.cleaned_data['email']
   exam_id = '1'
   exam_point = cet6_form.cleaned_data['exam_point']
   f_score = user_da.user_f_score
   # 用与下面的考点判断
   point = models.exam_entry_table.objects.filter(exam_point=exam_point, exam_id=exam_id)
   # 用与下面的是否重复报名判断
   entryer = models.user_entry_table.objects.filter(email=user.email, exam_id=exam_id)
   # 判断个人信息是否完善
   if user_da.user_true_name=='无'or user_da.user_id=='无':
    message="请先完善个人真实信息之后再来报名!"
    return render(request, 'home/cet_6.html', locals())
    # 判断是否重复报名
   elif entryer:
    # print("判断是否重复报名")
    message = "请勿重复报名!"
    return render(request, 'home/cet_6.html', locals())
   # 判断考点是否存在
   elif point:
    # 考点存在
    #判断四级成绩是否合格
    if f_score >= 425:
     # print("报名成功!请按时参加考试!")
     # 创建一条数据
     message = "报名成功!请按时参加考试!"
     new_user = models.user_entry_table.objects.create()
     new_user.email = user.email
     new_user.exam_id = exam_id
     new_user.exam_point = exam_point
     new_user.save()
     # 考点容量减1,报考人数加1
     exam_entry = models.exam_entry_table.objects.get(exam_point=exam_point, exam_id=exam_id)
     exam_entry.number -= 1
     exam_entry.entry_number += 1
     exam_entry.save()
     return render(request, 'home/cet_6.html', locals())
    else:
     message = "四级成绩大于425才能报名六级考试!"
     return render(request, 'home/cet_6.html', locals())
   else:
    message = "该学校还未开放报名!详情请咨询学校相关部门!"
    return render(request, 'home/cet_6.html', locals())
 cet6_form = user_entry(
  initial={"email": user.email, "user_name": user_da.user_name, "user_true_name": user_da.user_true_name,
     "user_id": user_da.user_id})
 return render(request, 'home/cet_6.html', locals())

到这里基本的后端都实现了。

4 项目最终框架展示

Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统

5 总结

成果展示:

注册:

Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统

登录:

Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统

主页:

Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统

管理端:

Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统

数据库设计问题:

由于此次设计在开始之时没有设计完善,数据库各表之间的关联存在问题,例如本次报名系统而言,用户信息最好添加手机号码,我本打算使用邮箱即可,但是推荐使用联系更快的电话号码等等问题。

附录

整体项目包地址链接: https://pan.baidu.com/s/130AP7coMP_U2q_dzaazUWA 提取码: nywa

总结

以上所述是小编给大家介绍的Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
50行代码实现贪吃蛇(具体思路及代码)
Apr 27 Python
python通过正则查找微博@(at)用户的方法
Mar 13 Python
python实现DES加密解密方法实例详解
Jun 30 Python
Python下rrdtool模块的基本使用方法
Nov 13 Python
用Python编写简单的微博爬虫
Mar 04 Python
python操作mysql代码总结
Jun 01 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 Python
Python用Jira库来操作Jira
Dec 28 Python
关于Python错误重试方法总结
Jan 03 Python
用Python爬虫破解滑动验证码的案例解析
May 06 Python
python通过函数名调用函数的几种方法总结
Jun 07 Python
python Tkinter模块使用方法详解
Apr 07 Python
PyCharm搭建Spark开发环境的实现步骤
Sep 05 #Python
浅谈Python_Openpyxl使用(最全总结)
Sep 05 #Python
python实现人工智能Ai抠图功能
Sep 05 #Python
深入了解Python在HDA中的应用
Sep 05 #Python
python urllib爬虫模块使用解析
Sep 05 #Python
详解Python3 pandas.merge用法
Sep 05 #Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
Sep 05 #Python
You might like
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
php MySQL与分页效率
2008/06/04 PHP
php的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
浅谈jQuery.easyui的datebox格式化时间
2015/06/25 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
2016/11/22 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
js html实现计算器功能
2018/11/13 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
初步探究Python程序的执行原理
2015/04/11 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
python的移位操作实现详解
2019/08/21 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
python GUI模拟实现计算器
2020/06/22 Python
Python实现石头剪刀布游戏
2021/01/20 Python
给定一个时间点,希望得到其他时间点
2013/11/07 面试题
感恩节活动策划方案
2014/05/16 职场文书
学校搬迁方案
2014/06/15 职场文书
云冈石窟导游词
2015/02/04 职场文书
2015年体育部工作总结
2015/04/02 职场文书
安全生产感想
2015/08/07 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers