Commit 9e839884 by wujunping

Initial commit

parents
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="MySQL - GP1HelloDjango@localhost" uuid="12d0683c-f7a2-4a4f-82f7-9b787f63a2b2">
<driver-ref>mysql.8</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://localhost:3306/GP1HelloDjango</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
<data-source source="LOCAL" name="Django default" uuid="fea4dd9c-1a4c-4b2c-aee5-5ce4d2166862">
<driver-ref>mysql.8</driver-ref>
<synchronize>true</synchronize>
<imported>true</imported>
<remarks>$PROJECT_DIR$/djangoProject/settings.py</remarks>
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://127.0.0.1:3306/GP1HelloDjango</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="FacetManager">
<facet type="django" name="Django">
<configuration>
<option name="rootFolder" value="$MODULE_DIR$" />
<option name="settingsModule" value="djangoProject/settings.py" />
<option name="manageScript" value="$MODULE_DIR$/manage.py" />
<option name="environment" value="&lt;map/&gt;" />
<option name="doNotUseTestRunner" value="false" />
<option name="trackFilePattern" value="migrations" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TemplatesService">
<option name="TEMPLATE_CONFIGURATION" value="Django" />
<option name="TEMPLATE_FOLDERS">
<list>
<option value="$MODULE_DIR$/templates" />
</list>
</option>
</component>
</module>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
<option name="processCode" value="true" />
<option name="processLiterals" value="true" />
<option name="processComments" value="true" />
</inspection_tool>
<inspection_tool class="SqlDialectInspection" enabled="false" level="WARNING" enabled_by_default="false" />
</profile>
</component>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (djangoProject) (2)" project-jdk-type="Python SDK" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/djangoProject.iml" filepath="$PROJECT_DIR$/.idea/djangoProject.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
from django.contrib import admin
# Register your models here.
from django.apps import AppConfig
class AppliConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'Appli'
# Generated by Django 4.0.1 on 2022-02-07 20:47
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
]
operations = [
]
# Generated by Django 4.0.1 on 2022-02-07 20:49
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('Appli', '0001_initial'),
]
operations = [
]
# Generated by Django 4.0.1 on 2022-02-16 22:43
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('Appli', '0002_auto_20220207_2049'),
]
operations = [
migrations.CreateModel(
name='group_list',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=22, unique=True, verbose_name='负责人')),
('group_name', models.CharField(max_length=25, unique=True, verbose_name='组名')),
],
),
migrations.CreateModel(
name='students_list',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=22, verbose_name='姓名')),
('stu_id', models.CharField(max_length=10, unique=True, verbose_name='学号')),
('password', models.CharField(max_length=32, verbose_name='密码')),
('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Appli.group_list', to_field='group_name', verbose_name='组别')),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='work_manage',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=28, unique=True, verbose_name='作业阶段')),
('begin', models.DateTimeField(verbose_name='开始时间')),
('end', models.DateTimeField(verbose_name='结束时间')),
],
),
migrations.CreateModel(
name='work_list',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('path', models.CharField(max_length=32)),
('remark', models.CharField(max_length=301)),
('time', models.DateTimeField(auto_now=True)),
('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Appli.group_list', to_field='group_name')),
('stage', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Appli.work_manage', to_field='name')),
('stu_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Appli.students_list', to_field='stu_id')),
],
),
migrations.CreateModel(
name='senior_list',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=22, verbose_name='姓名')),
('stu_id', models.CharField(max_length=10, unique=True, verbose_name='学号')),
('password', models.CharField(max_length=32, verbose_name='密码')),
('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Appli.group_list', to_field='group_name', verbose_name='组别')),
],
options={
'abstract': False,
},
),
]
# Generated by Django 4.0.1 on 2022-02-21 20:24
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Appli', '0003_initial'),
]
operations = [
migrations.AlterField(
model_name='work_list',
name='remark',
field=models.FileField(max_length=301, upload_to='path/'),
),
]
# Generated by Django 4.0.1 on 2022-02-21 20:30
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Appli', '0004_alter_work_list_remark'),
]
operations = [
migrations.CreateModel(
name='Student',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('stu_id', models.CharField(max_length=16, verbose_name='学号')),
('group', models.CharField(max_length=32, verbose_name='组别')),
('stage', models.CharField(max_length=32, verbose_name='阶段')),
('path', models.FileField(max_length=300, upload_to='path/', verbose_name='作业路径')),
('remark', models.CharField(max_length=32, verbose_name='作业备注')),
('time', models.DateTimeField(auto_now=True)),
],
),
migrations.DeleteModel(
name='work_list',
),
]
# Generated by Django 4.0.1 on 2022-02-21 20:31
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('Appli', '0005_student_delete_work_list'),
]
operations = [
migrations.RenameModel(
old_name='Student',
new_name='work_list',
),
]
# Generated by Django 4.0.1 on 2022-02-22 14:26
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Appli', '0006_rename_student_work_list'),
]
operations = [
migrations.AddField(
model_name='work_list',
name='out_time',
field=models.BooleanField(default=1),
preserve_default=False,
),
]
# Generated by Django 4.0.1 on 2022-02-22 18:48
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('Appli', '0007_work_list_out_time'),
]
operations = [
migrations.AlterField(
model_name='work_list',
name='out_time',
field=models.BooleanField(blank=True),
),
]
from django.db import models
# Create your models here.
from django.db import models
from django.forms import ModelForm
# Create your models here.
class group_list(models.Model): # 组的表
name = models.CharField(max_length=22, verbose_name='负责人', unique=True)
group_name = models.CharField(max_length=25, verbose_name='组名', unique=True)
class ComInfo(models.Model): # 这个是信息的模板,不用管他(因为学员和学长都有这些信息)
name = models.CharField(max_length=22, verbose_name='姓名')
stu_id = models.CharField(max_length=10, unique=True, verbose_name='学号')
password = models.CharField(max_length=32, verbose_name='密码')
group = models.ForeignKey(to_field='group_name', to='group_list', on_delete=models.CASCADE, verbose_name='组别')
class Meta:
abstract = True
class students_list(ComInfo): # 学员表,继承公共信息模板
pass
class senior_list(ComInfo): # 学长表,继承公共信息模板
pass
class work_list(models.Model):
stu_id = models.CharField(verbose_name="学号", max_length=16)
group = models.CharField(verbose_name="组别", max_length=32)
stage = models.CharField(verbose_name="阶段", max_length=32)
path = models.FileField(verbose_name="作业路径", max_length=300, upload_to='path/')
remark = models.CharField(verbose_name="作业备注", max_length=32)
time = models.DateTimeField(auto_now=True)
out_time = models.BooleanField(blank=True) # 判断是否超时
# 学长布置作业的表,,,
class work_manage(models.Model):
name = models.CharField(max_length=28, verbose_name='作业阶段', unique=True)
begin = models.DateTimeField(verbose_name='开始时间')
end = models.DateTimeField(verbose_name='结束时间')
class work_form(ModelForm):
class Meta:
model = work_manage
fields = ['name', 'begin', 'end']
from django.forms import ModelForm
from django.http import HttpResponse, QueryDict
from datetime import datetime
from django.shortcuts import render
from Appli import models
def get_stu_info(request):
stu_id = request.GET.get("stu_id")
context = {'stu_id': stu_id,
}
return render(request, 'Students_page.html', context=context)
class UpModelForm(ModelForm):
class Meta:
model = models.work_list
fields = ['stage', 'path', 'group', 'stu_id', 'remark', 'out_time']
def upload_modal_form(request):
""" 上传文件和数据(modelForm)"""
title = "ModelForm上传文件"
if request.method == "GET":
form = UpModelForm()
return render(request, 'Students_page.html', {"form": form, 'title': title})
time_ = datetime.now()
stage = request.POST.get('stage')
if models.work_manage.objects.filter(name=stage).first().end < time_:
out_time = True
else:
out_time = False
my_QrDict = request.POST.copy()
my_QrDict.setdefault('out_time', out_time)
form = UpModelForm(data=my_QrDict, files=request.FILES)
if form.is_valid():
form.save()
return HttpResponse("成功")
File added
import pymysql
pymysql.install_as_MySQLdb()
"""
ASGI config for djangoProject project.
It exposes the ASGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/4.0/howto/deployment/asgi/
"""
import os
from django.core.asgi import get_asgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoProject.settings')
application = get_asgi_application()
"""
Django settings for djangoProject project.
Generated by 'django-admin startproject' using Django 4.0.1.
For more information on this file, see
https://docs.djangoproject.com/en/4.0/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.0/ref/settings/
"""
import os
from pathlib import Path
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-y4h^u*75lq32#bgtg-^xc#di^oq^+z&&ic54q8g_p8s+x#)7o)'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = ["*"]
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 'Appli.apps.AppliConfig',
'Appli',
]
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 = 'djangoProject.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 = 'djangoProject.wsgi.application'
# Database
# https://docs.djangoproject.com/en/4.0/ref/settings/#databases
DATABASES = {
'default': {
#'ENGINE': 'django.db.backends.sqlite3',
#'NAME': BASE_DIR / 'db.sqlite3',
'ENGINE': 'django.db.backends.mysql', # 引擎为MySQL
'NAME': 'GP1HelloDjango', # 数据库名称
'USER': 'root', # 用户名
'PASSWORD': '20020302Wjp@', # 密码
'HOST': 'localhost', # 主机地址
'PORT': 3306, # 端口,可以加引号,也可以不加
}
}
# Password validation
# https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators
AUTH_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/4.0/topics/i18n/
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_TZ = False
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.0/howto/static-files/
#STATIC_URL = 'static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
# Default primary key field type
# https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = "/media/"
"""djangoProject URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/4.0/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, re_path
from django.views.static import serve
from Appli import views
from djangoProject import settings
urlpatterns = [
path('admin/', admin.site.urls),
path('get_stu_info/', views.get_stu_info),
re_path(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}, name='media'),
path('a/', views.upload_modal_form)
]
"""
WSGI config for djangoProject project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/4.0/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoProject.settings')
application = get_wsgi_application()
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoProject.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()
* {
margin: 0;
padding: 0;
}
.content{
height: 943px;
width: 100%;
background: url("../image/background.png");
background-size:100% 100% ;
overflow: hidden;
}
.container {
position: relative;
margin: 0 auto;
width: 1418px;
}
.nav-left {
position:absolute;
margin-top:20px ;
width: 340px;
height: 902px;
background: url("../image/nav-left_03.png");
border-radius: 10px;
border: 2px solid rgba(237, 215, 250, 0.281);
}
.logo{
position: relative;
margin-top: 54px;
left: 44px;
}
.logo div{
color: #75a0fd;
}
.photo-computer{
position:relative;
top: 354px;
}
.body-right {
position:absolute;
margin-top:20px ;
left: 380px;
width: 1054px;
height: 902px;
display: flex;
flex-direction: column;
}
.nav-right{
width: 1054px;
height: 100px;
background-color: #75a0fd;
}
.submit{
margin-top:140px;
width: 1030px;
height: 370px;
background-color: #f5f7f9;
display: flex;
}
.nav-right:first-child{
width:54px;
height:54px;
border-radius: 50%;
background-color: #75a0fd;
}
.nav-right span{
position: relative;
top:10px;
left: 60px;
/*强制字体在一行显示*/
white-space:nowrap;
overflow:hidden;
font-size:20px ;
}
.photo-list{
display: flex;
position: absolute;
left:300px;
top: -10px;
width: 33%;
}
.photo-list>img{
flex-direction:column;
}
.progress{
position: relative;
right:20px;
}
.submit-box{
width: 440px;
height: 310px;
background-color: #6c4aee;
opacity: 0.8;
position: relative;
top: 20px;
left: 50px;
font-size: 28px;
text-align: center;
color:white;
flex-direction: row;
border-radius: 3%;
}
.submit-box p{
position: relative;
top:44%;
}
.select-box{
position: relative;
top:20px;
margin-left: 80px;
}
.select-up{
width: 440px;
height: 160px;
background-color:white;
border-radius: 3%;
position: relative;
left:8px;
font-size: 20px;
color: #5a4f7e;
}
.select-down{
width: 440px;
height: 80px;
background-color:white;
border-radius: 3%;
position: relative;
top:20px;
left:8px;
font-size: 20px;
color: #5a4f7e;
}
.select-down span{
position: relative;
top:10px;
left: 10px;
}
.option{
position: relative;
top:12px;
left:10px;
}
.group{
position: relative;
left: 74px;
}
.number{
position: relative;
left: 56px;
}
.direction {
position: relative;
top:22px;
}
.group{
position: relative;
top:22px;
}
.name{
position: relative;
top:46px;
}
.number{
position: relative;
top:46px;
}
#tip,
#id_remark{
position: relative;
top:20px;
width: inherit;
height: inherit;
border:none;
outline:none;
resize:none;
overflow: scroll;
overflow-x: hidden;
}
#tip::-webkit-scrollbar {
width: 12px;
/*height: 4px;*/
}
#tip::-webkit-scrollbar-thumb {
border-radius: 10px;
-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
background: #ffffff;
}
#tip::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
border-radius: 10px;
background: #a296d1;
}
@font-face {
font-family: 'iconfont';
src: url('iconfont.ttf?t=1645438295383') format('truetype');
}
.iconfont {
font-family: "iconfont" !important;
font-size: 50px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: #56359a;
}
.sumbit-btn{
position: relative;
top:74px;
width:36px;
height:36px;
border-radius: 5px;
border-color:#56359a ;
}
.phone-boy{
position: relative;
top:600px;
left:370px;
}
.container-bottom{
width: 440px;
height: 288px;
position: relative;
top: 300px;
left: 400px;
overflow: hidden;
margin: auto;
}
.lunbo{
width: 1320px;
height: 288px;
font-size: 0;
position: absolute;
left: 0;
transition: all 1s;
}
.lunbo img{
width: 440px;
height: 288px;
}
.icon-left {
font-family: "iconfont" !important;
font-size: 40px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
position: absolute;
width: 40px;
height: 40px;
top:200px;
left:20px;
opacity: 0;
}
.icon-right {
font-family: "iconfont" !important;
font-size: 40px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
width: 40px;
height: 40px;
float: right;
position: absolute;
top:200px;
right:20px;
opacity: 0;
}
.container-bottom:hover .icon-right {
opacity: 1;
}
.container-bottom:hover .icon-left{
opacity: 1;
}
ul{list-style:none;position: absolute;left:360px;bottom:10px;}
li{border: 1px solid black;border-radius: 20px;width: 12px;height: 12px;float: left;margin-left: 6px;background-color:rgba(255,0,0,0) ;}
#id_remark::-webkit-scrollbar {
width: 12px;
/*height: 4px;*/
}
#id_remark::-webkit-scrollbar-thumb {
border-radius: 10px;
-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
background: #ffffff;
}
#id_remark::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
border-radius: 10px;
background: #a296d1;
}
\ No newline at end of file
/* Logo 字体 */
@font-face {
font-family: "iconfont logo";
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
}
.logo {
font-family: "iconfont logo";
font-size: 160px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* tabs */
.nav-tabs {
position: relative;
}
.nav-tabs .nav-more {
position: absolute;
right: 0;
bottom: 0;
height: 42px;
line-height: 42px;
color: #666;
}
#tabs {
border-bottom: 1px solid #eee;
}
#tabs li {
cursor: pointer;
width: 100px;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 16px;
border-bottom: 2px solid transparent;
position: relative;
z-index: 1;
margin-bottom: -1px;
color: #666;
}
#tabs .active {
border-bottom-color: #f00;
color: #222;
}
.tab-container .content {
display: none;
}
/* 页面布局 */
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main .logo {
color: #333;
text-align: left;
margin-bottom: 30px;
line-height: 1;
height: 110px;
margin-top: -50px;
overflow: hidden;
*zoom: 1;
}
.main .logo a {
font-size: 160px;
color: #333;
}
.helps {
margin-top: 40px;
}
.helps pre {
padding: 20px;
margin: 10px 0;
border: solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists {
width: 100% !important;
overflow: hidden;
*zoom: 1;
}
.icon_lists li {
width: 100px;
margin-bottom: 10px;
margin-right: 20px;
text-align: center;
list-style: none !important;
cursor: default;
}
.icon_lists li .code-name {
line-height: 1.2;
}
.icon_lists .icon {
display: block;
height: 100px;
line-height: 100px;
font-size: 42px;
margin: 10px auto;
color: #333;
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
-moz-transition: font-size 0.25s linear, width 0.25s linear;
transition: font-size 0.25s linear, width 0.25s linear;
}
.icon_lists .icon:hover {
font-size: 100px;
}
.icon_lists .svg-icon {
/* 通过设置 font-size 来改变图标大小 */
width: 1em;
/* 图标和文字相邻时,垂直对齐 */
vertical-align: -0.15em;
/* 通过设置 color 来改变 SVG 的颜色/fill */
fill: currentColor;
/* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
normalize.css 中也包含这行 */
overflow: hidden;
}
.icon_lists li .name,
.icon_lists li .code-name {
color: #666;
}
/* markdown 样式 */
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p {
margin: 1em 0;
}
.markdown>p,
.markdown>blockquote,
.markdown>.highlight,
.markdown>ol,
.markdown>ul {
width: 80%;
}
.markdown ul>li {
list-style: circle;
}
.markdown>ul li,
.markdown blockquote ul>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown>ul li p,
.markdown>ol li p {
margin: 0.6em 0;
}
.markdown ol>li {
list-style: decimal;
}
.markdown>ol li,
.markdown blockquote ol>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown>table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown>table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown>table th,
.markdown>table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown>table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown>br,
.markdown>p>br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
/* 代码高亮 */
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre)>code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre)>code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>iconfont Demo</title>
<link rel="shortcut icon" href="//img.alicdn.com/imgextra/i2/O1CN01ZyAlrn1MwaMhqz36G_!!6000000001499-73-tps-64-64.ico" type="image/x-icon"/>
<link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01EYTRnJ297D6vehehJ_!!6000000008020-55-tps-64-64.svg"/>
<link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
<link rel="stylesheet" href="demo.css">
<link rel="stylesheet" href="iconfont.css">
<script src="iconfont.js"></script>
<!-- jQuery -->
<script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
<!-- 代码高亮 -->
<script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>
<style>
.main .logo {
margin-top: 0;
height: auto;
}
.main .logo a {
display: flex;
align-items: center;
}
.main .logo .sub-title {
margin-left: 0.5em;
font-size: 22px;
color: #fff;
background: linear-gradient(-45deg, #3967FF, #B500FE);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
</style>
</head>
<body>
<div class="main">
<h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">
<img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg">
</a></h1>
<div class="nav-tabs">
<ul id="tabs" class="dib-box">
<li class="dib active"><span>Unicode</span></li>
<li class="dib"><span>Font class</span></li>
<li class="dib"><span>Symbol</span></li>
</ul>
</div>
<div class="tab-container">
<div class="content unicode" style="display: block;">
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xec9e;</span>
<div class="name">对勾</div>
<div class="code-name">&amp;#xec9e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe638;</span>
<div class="name">bg-left</div>
<div class="code-name">&amp;#xe638;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe64c;</span>
<div class="name">bg-right</div>
<div class="code-name">&amp;#xe64c;</div>
</li>
</ul>
<div class="article markdown">
<h2 id="unicode-">Unicode 引用</h2>
<hr>
<p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>
<ul>
<li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
<li>默认情况下不支持多色,直接添加多色图标会自动去色。</li>
</ul>
<blockquote>
<p>注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)</p>
</blockquote>
<p>Unicode 使用步骤如下:</p>
<h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>
<pre><code class="language-css"
>@font-face {
font-family: 'iconfont';
src: url('iconfont.ttf?t=1645438295383') format('truetype');
}
</code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
<pre><code class="language-css"
>.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
</code></pre>
<h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
<pre>
<code class="language-html"
>&lt;span class="iconfont"&gt;&amp;#x33;&lt;/span&gt;
</code></pre>
<blockquote>
<p>"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
</blockquote>
</div>
</div>
<div class="content font-class">
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-duigoux"></span>
<div class="name">
对勾
</div>
<div class="code-name">.icon-duigoux
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-bg-left"></span>
<div class="name">
bg-left
</div>
<div class="code-name">.icon-bg-left
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-bg-right"></span>
<div class="name">
bg-right
</div>
<div class="code-name">.icon-bg-right
</div>
</li>
</ul>
<div class="article markdown">
<h2 id="font-class-">font-class 引用</h2>
<hr>
<p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
<p>与 Unicode 使用方式相比,具有如下特点:</p>
<ul>
<li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
<li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
</ul>
<p>使用步骤如下:</p>
<h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
<pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt;
</code></pre>
<h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
<pre><code class="language-html">&lt;span class="iconfont icon-xxx"&gt;&lt;/span&gt;
</code></pre>
<blockquote>
<p>"
iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
</blockquote>
</div>
</div>
<div class="content symbol">
<ul class="icon_lists dib-box">
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-duigoux"></use>
</svg>
<div class="name">对勾</div>
<div class="code-name">#icon-duigoux</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-bg-left"></use>
</svg>
<div class="name">bg-left</div>
<div class="code-name">#icon-bg-left</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-bg-right"></use>
</svg>
<div class="name">bg-right</div>
<div class="code-name">#icon-bg-right</div>
</li>
</ul>
<div class="article markdown">
<h2 id="symbol-">Symbol 引用</h2>
<hr>
<p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>
这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:</p>
<ul>
<li>支持多色图标了,不再受单色限制。</li>
<li>通过一些技巧,支持像字体那样,通过 <code>font-size</code>, <code>color</code> 来调整样式。</li>
<li>兼容性较差,支持 IE9+,及现代浏览器。</li>
<li>浏览器渲染 SVG 的性能一般,还不如 png。</li>
</ul>
<p>使用步骤如下:</p>
<h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3>
<pre><code class="language-html">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;
</code></pre>
<h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>
<pre><code class="language-html">&lt;style&gt;
.icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
&lt;/style&gt;
</code></pre>
<h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
<pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt;
&lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt;
&lt;/svg&gt;
</code></pre>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function () {
$('.tab-container .content:first').show()
$('#tabs li').click(function (e) {
var tabContent = $('.tab-container .content')
var index = $(this).index()
if ($(this).hasClass('active')) {
return
} else {
$('#tabs li').removeClass('active')
$(this).addClass('active')
tabContent.hide().eq(index).fadeIn()
}
})
})
</script>
</body>
</html>
@font-face {
font-family: "iconfont"; /* Project id */
src: url('iconfont.ttf?t=1645438295383') format('truetype');
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-duigoux:before {
content: "\ec9e";
}
.icon-bg-left:before {
content: "\e638";
}
.icon-bg-right:before {
content: "\e64c";
}
!function(e){var t,n,o,i,a,l='<svg><symbol id="icon-duigoux" viewBox="0 0 1024 1024"><path d="M939.36 218.912a32 32 0 0 1 45.856 44.672l-538.016 552a32 32 0 0 1-43.776 1.92L63.872 526.048a32 32 0 1 1 41.696-48.544l316.768 271.936L939.36 218.88z" ></path></symbol><symbol id="icon-bg-left" viewBox="0 0 1024 1024"><path d="M628.48 756.053333a35.84 35.84 0 0 1-50.773333 0L341.333333 536.746667a35.84 35.84 0 0 1 0-52.48l235.52-220.586667a35.84 35.84 0 1 1 49.066667 52.48L419.413333 512l207.786667 194.56a35.84 35.84 0 0 1 1.28 49.493333zM512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z" fill="#5E5C5C" ></path></symbol><symbol id="icon-bg-right" viewBox="0 0 1024 1024"><path d="M682.666667 536.746667l-235.52 220.586666a35.84 35.84 0 0 1-49.066667-52.48L603.733333 512 395.946667 315.733333a35.84 35.84 0 1 1 49.066666-52.48L682.666667 484.266667a35.84 35.84 0 0 1 0 52.48zM512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z" fill="#5E5C5C" ></path></symbol></svg>',d=(d=document.getElementsByTagName("script"))[d.length-1].getAttribute("data-injectcss"),r=function(e,t){t.parentNode.insertBefore(e,t)};if(d&&!e.__iconfont__svg__cssinject__){e.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(e){console&&console.log(e)}}function c(){a||(a=!0,o())}function s(){try{i.documentElement.doScroll("left")}catch(e){return void setTimeout(s,50)}c()}t=function(){var e,t=document.createElement("div");t.innerHTML=l,l=null,(t=t.getElementsByTagName("svg")[0])&&(t.setAttribute("aria-hidden","true"),t.style.position="absolute",t.style.width=0,t.style.height=0,t.style.overflow="hidden",t=t,(e=document.body).firstChild?r(t,e.firstChild):e.appendChild(t))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(n=function(){document.removeEventListener("DOMContentLoaded",n,!1),t()},document.addEventListener("DOMContentLoaded",n,!1)):document.attachEvent&&(o=t,i=e.document,a=!1,s(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,c())})}(window);
\ No newline at end of file
{
"id": "",
"name": "",
"font_family": "iconfont",
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "6616926",
"name": "对勾",
"font_class": "duigoux",
"unicode": "ec9e",
"unicode_decimal": 60574
},
{
"icon_id": "11882841",
"name": "bg-left",
"font_class": "bg-left",
"unicode": "e638",
"unicode_decimal": 58936
},
{
"icon_id": "11882936",
"name": "bg-right",
"font_class": "bg-right",
"unicode": "e64c",
"unicode_decimal": 58956
}
]
}
This image diff could not be displayed because it is too large. You can view the blob instead.
var button_left=document.getElementById("icon-left");
var button_right=document.getElementById("icon-right");
var lunbo=document.getElementById("lunbo");
var li=Array.from(document.getElementsByTagName("li"))
var container=document.querySelector('#container');
var position=0
var li_style
var timer=null;
init();
function init(){
button_left.addEventListener("click",click);
button_right.addEventListener("click",click);
for(var i=0;i<li.length;i++){
li[i].addEventListener("click",liclick)
}
change()
var timer = setInterval(function () {undefined
button_right.click();
}, 2000)
//当鼠标移入时清除定时器
container.onmouseover=function(){
clearInterval(timer);
}
//鼠标移出又开启定时器
container.onmouseleave=function(){
clearInterval(timer);
timer = setInterval(function () {undefined
button_right.click();
}, 2000)
}
}
function liclick(e){
/*求出点的是第几个小圆点*/
position=li.indexOf(this);
lunbo.style.left=-800*position+"px";
if(li_style){
li_style.style.backgroundColor="rgba(255,0,0,0)"
}
li_style=li[position];
li_style.style.backgroundColor="rgba(255,0,0,0.3)"
}
function click(e){
/*判断点击的是左箭头还是右箭头*/
if(this===button_left){
position--;
if(position<0){
position=2;
}
change();
return
}
position++;
/*实现轮播 */
if(position>2){
position=0;
}
change();
}
function change(){
/*点击小圆点时变颜色*/
lunbo.style.left=-440*position+"px";
if(li_style){
li_style.style.backgroundColor="rgba(255,0,0,0)"
}
li_style=li[position];
li_style.style.backgroundColor="rgba(255,0,0,0.3)"
}
<!DOCTYPE html>
{% load static %}
<html lang="zh-hans">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Students_page</title>
<link rel="stylesheet" href="{% static 'css/index.css' %}">
<link rel="stylesheet" href="{% static 'font_371thj3m5tc/iconfont.css' %}">
</head>
<body>
<form method="post" enctype="multipart/form-data" novalidate>
{% csrf_token %}
<div class="content">
<div class="container">
<div class="nav-left"><!--左边那一列-->
<div class="logo"><img src="{% static 'image/logo.png' %}"><div>云顶书院<br/>YUNDING ACADEMY</div></div>
<div class="photo-computer"><img src="{% static 'image/computer.png' %}"></div>
</div>
<div class="body-right"><!--右边的主体部分-->
<div class="nav-right"><!--右边主体中的最上面-->
<div></div><span>中午好,haha!</span>
<div class="photo-list">
<img src="{% static 'image/people1.png' %}">
<img src="{% static 'image/people2.png' %}">
<img src="{% static 'image/people3.png' %}">
<img src="{% static 'image/people4.png' %}">
</div>
<div class="progress"></div>
</div>
<div class="submit"><!--右边主体的中间-->
{# <div class="submit-box"><p>点击此处提交文件</p></div>#}
<input type="file" name="path" required="" id="id_path" class="submit-box">
<div class="select-box"><div class="select-up">
<span class="option" style="display: block;width: 50%;margin: auto">阶段:
<select name="stage" required="" id="id_stage">
<option>第一阶段</option>
<option>第二阶段</option>
<option>适应期阶段三</option>
<option>适应期阶段四</option>
<option>适应期阶段五</option>
</select>
</span>
<div class="option">
<span class="direction" style="display: block;width: 50%;margin: auto">
组别:
<select name="group" required="" id="id_group">
<option>开发一组</option>
<option>开发二组</option>
<option>开发三组</option>
<option>开发四组</option>
<option>开发五组</option>
<option>开发六祖</option>
<option>开发七组</option>
<option>开发八组</option>
<option>开发九组</option>
<option>开发十组</option>
<option>开发十一组</option>
<option>设计</option>
<option>秘书处</option>
</select>
{# </span>#}
{# <span class="group">组别: <input type="text"style="width:18%">#}
{# </span>#}
{# <br/>#}
{# <span class="name">姓名: <input type="text" style="width:18%";></span>#}
<span class="" style="display: inline-block;width: 100%;height: 20%;margin: 20px auto">学号: <input type="text" style="width:45%" name="stu_id" required="" id="id_stu_id"></span>
{% for i in form %}
{# {% if forloop.counter == 3 %}#}
{# {{ i }}#}
{# {% endif %}#}
{% if i.errors %}
{{ forloop.counter }}
{% endif %}
{% endfor %}
</div>
</div>
<div class="select-down"><span>备注</span>
<textarea id="id_remark" class="_tip" name="remark" required=""></textarea>
{# id = tip#}
</div>
<div class="button-sumbit">
<button type="submit" class="sumbit-btn"><span class="iconfont">&#xec9e;</span></button>
</div>
</div>
</div>
</div>
<div class="bottom"><!--右边主体的最下面及轮播图-->
<img class="phone-boy"src="{% static 'image/phone2.png' %}">
<div class="container-bottom"id="container-bottom">
<div class="lunbo"id="lunbo">
<img src="{% static 'image/lunbo1.png' %}">
<img src="{% static 'image/lunbo3.png' %}">
<img src="{% static 'image/lunbo4.png' %}">
</ul>
</div>
<div class="icon-left" id="icon-left">&#xe638;</div>
<div class="icon-right" id="icon-right">&#xe64c;</div>
<ul>
<li class="circle"></li>
<li class="circle"></li>
<li class="circle"></li>
</ul>
</div>
</div>
</div>
</div>
<script src="{% static 'js/http.js' %}"></script>
</form>
</body>
</html>
\ No newline at end of file
{% block content %}
<div class="container">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"> {{ title }} </h3>
</div>
<div class="panel-body">
<form method="post" enctype="multipart/form-data" novalidate >
{% csrf_token %}
{% for field in form %}
<div class="form-group">
<label>{{ field.label }}</label>
{% if forloop.counter == 2 %}
<input type="file" name="path" required="" id="id_path">
{% else %}
{{ field }}
{% endif %}
<span style="color: red;">{{ field.errors.0 }}</span>
</div>
{% endfor %}
<button type="submit" class="btn btn-primary">提 交</button>
</form>
</div>
</div>
</div>
{% endblock %}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment