login
This commit is contained in:
parent
99f0ee7f7b
commit
98003e547b
|
@ -0,0 +1,6 @@
|
|||
from django import forms
|
||||
|
||||
|
||||
class GroupsForm(forms.Form):
|
||||
username = forms.CharField(label="用户名", max_length=128, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': "Username",'autofocus': ''}))
|
||||
password = forms.CharField(label="密码", max_length=256, widget=forms.PasswordInput(attrs={'class': 'form-control','placeholder': "Password"}))
|
Binary file not shown.
After Width: | Height: | Size: 465 B |
Binary file not shown.
After Width: | Height: | Size: 9.3 KiB |
|
@ -0,0 +1,41 @@
|
|||
body {
|
||||
height: 100%;
|
||||
background-image: url('../images/pic1.jpg');
|
||||
}
|
||||
.form-login {
|
||||
width: 100%;
|
||||
max-width: 330px;
|
||||
padding: 15px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.form-login{
|
||||
margin-top:80px;
|
||||
font-weight: 400;
|
||||
}
|
||||
.form-login .form-control {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
height: auto;
|
||||
padding: 10px;
|
||||
font-size: 16px;
|
||||
|
||||
}
|
||||
.form-login .form-control:focus {
|
||||
z-index: 2;
|
||||
}
|
||||
.form-login input[type="text"] {
|
||||
margin-bottom: -1px;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
.form-login input[type="password"] {
|
||||
margin-bottom: 10px;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
form a{
|
||||
display: inline-block;
|
||||
margin-top:25px;
|
||||
font-size: 12px;
|
||||
line-height: 10px;
|
||||
}
|
|
@ -260,7 +260,7 @@
|
|||
<li class="dropdown user user-menu">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
<img src="dist/img/user2-160x160.jpg" class="user-image" alt="User Image">
|
||||
<span class="hidden-xs">Alexander Pierce</span>
|
||||
<span class="hidden-xs">{{ request.session.user_name }}</span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<!-- User image -->
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
{% load static %}
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<!-- 上述meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
|
||||
<!-- Bootstrap CSS -->
|
||||
<link href="{% static 'groups/bower_components/bootstrap/dist/css/bootstrap.min.css' %}" rel="stylesheet"/>
|
||||
<link href="{% static 'groups/login/login.css' %}" rel="stylesheet"/>
|
||||
<title>登录</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="col">
|
||||
<form class="form-login" action="/groups/login/" method="post">
|
||||
{% if message %}
|
||||
<div class="alert alert-warning">{{ message }}</div>
|
||||
{% endif %}
|
||||
{% csrf_token %}
|
||||
<h3 class="text-center">欢迎登录</h3>
|
||||
<div class="form-group">
|
||||
{{ groups_form.username.label_tag }}
|
||||
{{ groups_form.username}}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ groups_form.password.label_tag }}
|
||||
{{ groups_form.password }}
|
||||
</div>
|
||||
<div>
|
||||
<button type="submit" class="btn btn-primary float-right">登录</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div> <!-- /container -->
|
||||
|
||||
<!-- Optional JavaScript -->
|
||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||
<script src="{% static 'groups/bower_components/jquery/dist/jquery.js' %}"></script>
|
||||
<script src="https://cdn.bootcss.com/popper.js/1.15.0/umd/popper.js"></script>
|
||||
<script src="{% static 'groups/bower_components/bootstrap/dist/js/bootstrap.min.js' %}"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -3,4 +3,8 @@ from . import views
|
|||
|
||||
urlpatterns = [
|
||||
path('', views.index, name='index'),
|
||||
path('index/', views.index, name='index'),
|
||||
path('login/', views.login, name='login'),
|
||||
path('logout/', views.logout, name='logout'),
|
||||
|
||||
]
|
|
@ -1,8 +1,47 @@
|
|||
from django.http import HttpResponse
|
||||
from django.shortcuts import render
|
||||
from django.shortcuts import redirect
|
||||
from .models import Groups
|
||||
from .forms import GroupsForm
|
||||
|
||||
|
||||
|
||||
def index(request):
|
||||
#latest_question_list = Question.objects.order_by('-pub_date')[:5]
|
||||
if not request.session.get('is_login', None):
|
||||
return redirect('/groups/login/')
|
||||
return render(request, 'groups/index.html')
|
||||
|
||||
def login(request):
|
||||
# 不允许重复登录
|
||||
if request.session.get('is_login', None):
|
||||
return redirect('/groups/index/')
|
||||
if request.method == "POST":
|
||||
groups_form = GroupsForm(request.POST)
|
||||
message = '请检查填写的内容!'
|
||||
if groups_form.is_valid():
|
||||
username = groups_form.cleaned_data.get('username')
|
||||
password = groups_form.cleaned_data.get('password')
|
||||
|
||||
try:
|
||||
user = Groups.objects.get(name=username)
|
||||
except:
|
||||
message = '用户不存在!'
|
||||
return render(request, 'groups/login.html', locals())
|
||||
if user.password == password:
|
||||
request.session['is_login'] = True
|
||||
request.session['user_id'] = user.id
|
||||
request.session['user_name'] = user.name
|
||||
return redirect('/groups/index/')
|
||||
else:
|
||||
message = '密码不正确!'
|
||||
return render(request, 'groups/login.html', locals())
|
||||
else:
|
||||
return render(request, 'groups/login.html', locals())
|
||||
groups_form = GroupsForm()
|
||||
return render(request, 'groups/login.html', locals())
|
||||
|
||||
def logout(request):
|
||||
if not request.session.get('is_login', None):
|
||||
return redirect('/groups/login')
|
||||
request.session.flush()
|
||||
return redirect('/groups/login')
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
# Generated by Django 2.1.4 on 2019-09-12 15:10
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0264_auto_20190909_0916'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='CompanyInfo',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=64, verbose_name='公司名称')),
|
||||
('nature', models.SmallIntegerField(choices=[(0, '国企'), (1, '私企')], default=0, verbose_name='企业性质')),
|
||||
('address', models.CharField(max_length=128, verbose_name='公司地址')),
|
||||
('fixed_assets', models.IntegerField(blank=True, null=True, verbose_name='固定资产')),
|
||||
('website', models.CharField(blank=True, max_length=64, null=True, verbose_name='公司网址')),
|
||||
('peoplenum', models.IntegerField(blank=True, null=True, verbose_name='公司人数')),
|
||||
('legalperson', models.CharField(blank=True, max_length=24, null=True, verbose_name='法人代表')),
|
||||
('legalperson_phone', models.CharField(blank=True, max_length=24, null=True, verbose_name='法人电话')),
|
||||
('liaison', models.CharField(max_length=24, verbose_name='联系人')),
|
||||
('liaison_phone', models.CharField(max_length=24, verbose_name='联系人电话')),
|
||||
('liaison_fax', models.CharField(blank=True, max_length=10, null=True, verbose_name='联系人传真')),
|
||||
('introduce', models.TextField(blank=True, null=True, verbose_name='公司概况')),
|
||||
('createtime', models.DateTimeField(auto_now_add=True)),
|
||||
('modifytime', models.DateTimeField(auto_now=True)),
|
||||
('partment', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment', verbose_name='公司ID')),
|
||||
],
|
||||
),
|
||||
]
|
Loading…
Reference in New Issue