【Django Series - 03】用户管理模块:创建用户、登录、退出

Django Series(Django2.1.2 + Anaconda3)

(一)安装并配置 Django 环境 ||| 基于 Django 进行 Web 开发

(二)Django 基础知识:语法、教程

(三)用户管理模块:创建用户、登录、退出

(四)数据的增删改:用户提交数据,验证数据的有效性并传输至后台(jQuery.post、jQuery.getJSON)

(五)基于 "xlsxwriter  + BytesIO"(Python3)生成 Excel 报表 ||| Python2 StringIO.StringIO()


说明:本系列教程根据最近实践过程进行整理、总结和分享。由于时间和精力有限,发表时内容分析部分可能不是很完整,后续有时间会慢慢补充。同时!!也希望感兴趣的同学可以提出一些细节问题和建议,我会根据这些问题进一步整理和完善哈。

更新日志:

20181019:发表第一版,主要以代码分享为主;知识点分析较为粗略。


知识点分析:

 

 

实现代码:

models.py

# -*- coding: utf-8 -*-
from django.db import models
from django.contrib.auth.models import User

class BRsystemUser(models.Model):

	Users = models.OneToOneField(User, on_delete = models.CASCADE)
	UserName = models.CharField(max_length = 20, verbose_name = u'用户ID')  
	UserPWD = models.CharField(max_length = 20, verbose_name = u'用户密码')
	RoleTypeID = models.CharField(max_length = 10, verbose_name = u'用户类型ID')    #用户类型:"admin"为管理员, "general"为普通员工
	NickName = models.CharField(max_length = 20, verbose_name = u'昵称')            #用户真正名字
	RegisterTime = models.DateTimeField(auto_now_add = True, verbose_name = u'注册时间')
	MobilePhone = models.CharField(max_length = 11, verbose_name = u'手机号码', null = True)      	#电话号码
	Note = models.CharField(default = 'None', max_length = 100, verbose_name = u'备注',null = True)

	def __str__(self):
		return self.Users.username + ' ' + self.RoleTypeID

urls.py

from django.urls import include, path, re_path
from app_ManageSystem import views

app_name = 'app_ManageSystem'

urlpatterns = [
    
    path(r'Login', views.Login, name='Login'),
    path(r'Logout', views.Logout, name='Logout'),
    
]

views.py

### 系统登录界面
@csrf_exempt
def Login(request):

	context = {}

	if request.POST:
		UserName = request.POST.get('form_UserName')
		UserPWD = request.POST.get('form_UserPWD')
		print(UserName, UserName)

		user = auth.authenticate(username = UserName, password = UserPWD)
		if user is not None:
			print("{} login successful".format(UserName))
			if user.is_active:
				auth.login(request, user)
				sys_user = BRsystemUser.objects.get(Users = user)
				request.session["UserName"] = sys_user.UserName
				request.session["UserPWD"] = sys_user.UserPWD
				request.session["RoleTypeID"] = sys_user.RoleTypeID
				request.session["NickName"] = sys_user.NickName
				request.session["MobilePhone"] = sys_user.MobilePhone
				request.session["Note"] = sys_user.Note
				request.session["log_file_path"] = os.path.join("report", "log", sys_user.UserName + ".txt")

				hcq_write(request.session.get('log_file_path'), True, False, "[{}({})] 成功登录系统".format(
																sys_user.UserName, sys_user.RoleTypeID))

				return HttpResponseRedirect('/')
				# return render(request, 'Login.html', context)
			else:
				print("{} login failure: not_active".format(UserName))
		else:
			## user is not exist or pwd is error
			print("{} login failure: user is not exist or pwd is error".format(UserName))

	
	return render(request, 'Login.html', context)

# 注销
@csrf_exempt
def Logout(request):

	hcq_write(request.session.get('log_file_path'), True, False, "[{}({})] 成功退出系统".format(
										request.session.get('UserName'), request.session.get('RoleTypeID')))
	auth.logout(request)
	return HttpResponseRedirect('/')

Login.html

<body>
    <table width="100%">
        <!-- 顶部部分 -->
        <tr height="41"><td colspan="2" background="{% static 'images/login_top_bg.gif' %}">&nbsp;</td></tr>
        <!-- 主体部分 -->
        <tr style="background:url({% static 'images/login_bg.jpg' %}) repeat-x;" height="532">
            <!-- 主体右部分 -->
            <td id="right_cont">
                <table height="100%">
                    <tr height="30%"><td colspan="3">&nbsp;</td></tr>
                    <tr>
                        <td width="30%" rowspan="5">&nbsp;</td>
                        <td valign="top" id="form">
                            <form action="" method="post">
                                {% csrf_token %}
                                <table valign="top" width="50%">
                                    <tr>
                                        <td colspan="2">
                                            <h4 style="letter-spacing:1px; font-size:16px; font-weight: bold;">xxxx管理系统</h4>
                                        </td>
                                    </tr>

                                    <tr>
                                        <td>账号:</td>
                                        <td>
                                            <input type="text" id="form_UserName" name="form_UserName" value="" placeholder="请输入用户名...">
                                        </td>
                                    </tr>

                                    <tr>
                                        <td>密码:</td>
                                        <td>
                                            <input type="password" id="form_UserPWD" name="form_UserPWD" value="" placeholder="请输入密码...">
                                        </td>
                                    </tr>

                                    <!-- <tr>
                                        <td>验证码:</td>
                                        <td>
                                            <input type="text" name="" value="" style="width:80px;"/>
                                        </td>
                                    </tr> -->
                                    
                                    <tr class="bt" align="center">
                                        <td>
                                            <input type="submit" value="登录" />
                                        </td>
                                        <td>
                                            <input type="reset" value="重填" />
                                        </td>
                                    </tr>
                                </table>
                            </form>
                        </td>
                        <td rowspan="5">&nbsp;</td>
                    </tr>
                    <tr><td colspan="3">&nbsp;</td></tr>
                </table>
            </td>
        </tr>
        <tr id="login_bot"><td colspan="2"><p>Copyright © 2018 </p></td></tr>
    </table>
</body>

base.html

<body>
    <div class="container-fluid">
            <table cellpadding="0" width="100%" height="64" background="{% static 'images/top_top_bg.gif' %}">
                <tr valign="top">
                    <td width="50%">
                        <a href="/">  <!-- 返回主页 -->
                            <img style="border:none" src="{% static 'images/logo3.png' %}" />
                        </a>
                    </td>
                    <td width="30%" style="padding-top:13px;font:15px Arial,SimSun,sans-serif;color:#FFF">
                        {% if UserName %}
                            {% ifequal RoleTypeID 'admin' %}
                                尊敬的 <b>{{ NickName }}</b>(管理员) 您好,感谢登陆使用!
                            {% else %}
                                尊敬的 <b>{{ NickName }}</b> 您好,感谢登陆使用!
                            {% endifequal %}
                        {% else %}
                            您好,请先登录!
                        {% endif %}
                    </td>
                    <td style="padding-top:10px;padding-right:10px;" align="right">
                        <a href="\"><img style="border:none" src="{% static 'images/index.gif' %}" /></a>
                        <a href="{% url 'app_ManageSystem:Logout' %}"><img style="border:none" src="{% static 'images/out.gif' %}" /></a>
                    </td>
                </tr>
            </table>
    </div>
</body>

创建用户:

# -*- coding: utf-8 -*-
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'BR_Pro_Manage_System.settings')
django.setup()

from app_ManageSystem.models import *

def Add_Users(UserName, UserPWD, RoleTypeID, NickName):

	try:
		if not User.objects.filter(username = UserName, password = UserPWD).exists():
			NewUser = User.objects.create_user(username = UserName, password = UserPWD)
			NewUser.save()
			if not BRsystemUser.objects.filter(Users = NewUser, UserName = UserName).exists():
				new_myuser = BRsystemUser.objects.get_or_create(Users = NewUser, UserName = UserName, UserPWD = UserPWD, RoleTypeID = RoleTypeID, NickName = NickName)[0]
				new_myuser.save()

				print("[{}] saved".format(UserName))
	except Exception as e:
		print("[error] Add_Users: {}".format(e))

### main
def population():

	# # Add_Users(UserName, UserPWD, RoleTypeID, NickName)
	Add_Users("hcq", "123", "general", "houchaoqun")
	Add_Users("jackan", "123", "admin", "kangjie")


### main program
if __name__ == '__main__':

	population()

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值