BVDN-4 用户注册登录

一、下载Django-users2

百度搜索“pypi django-users2”。把这个包下载下来

在这里插入图片描述
在这里插入图片描述
点击右侧原谅色按钮,下载tar.gz包,然后解压,你会发现里面有个users文件夹,这就是我们想要的东西
在这里插入图片描述

二、复制users文件夹

打开前面建好的项目(mysite)文件夹然后将刚下载好的users文件复制进去

在这里插入图片描述

三、应用注册及模型替换(settings.py

在内层主文件夹里的settings.py里的INSTALLED_APPS列表里注册用户账户系统users(否则不能用)

		NSTALLED_APPS = [
	    'django.contrib.admin',
	    'django.contrib.auth',
	    'django.contrib.contenttypes',
	    'django.contrib.sessions',
	    'django.contrib.messages',
	    'django.contrib.staticfiles',
	    'main',
	    'users',
	]
		AUTH_USER_MODEL='users.User'

千万不要忘记底下那一行AUTH_USER_MODEL = ,那是把django的user模型换成users包里面的用户模型。不换的话users虽然安装成功了,依然用的是原版django用户模型。那就白干了。

四、更新用户模型(migrate)

打开dos命令跳转到项目(mysite)文件夹下,运行一下命令:
	python manage.py migrate更新用户模型

在这里插入图片描述

五、创建超级管理员

	python manage.py createsuperuser(注意密码输入是看不见的所以不要怀疑是你的键盘坏了)

在这里插入图片描述

六、运行服务器并浏览

	python manage.py runserver 8003

在这里插入图片描述
访问127.0.0.1:8003/admin
在这里插入图片描述
在这里插入图片描述
进去找到user模型,点开它。如果出现如下画面(只有邮箱和active两列),说明我们的user模型替换成功了,如果还有first name, last name等其他列,说明替换失败,退回去重做!
在这里插入图片描述
大家可能觉得英文看着不爽不要着急马上我就教大家把他搞成中文的页面‘
首先打开settings.py找到

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'

修改为:

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

保存后刷新页面:
在这里插入图片描述

七、更改新的user模型

虽然我们替换成功,但是一个用户账户只有email一个信息绝对是不够用的,所以我们要向现在的user模型里扩充其他东西。也就是说我们要更改新的user模型
在这里插入图片描述
7.1修改users/models.py
找到users文件夹里的models.py打开它,找到现在还是空着的User模型(一般在最底下),如图
在这里插入图片描述加入你想要的模型

class User(AbstractUser):

"""
Concrete class of AbstractUser.
Use this if you don't need to extend User.
"""
name = models.CharField(max_length=20,default="第一次登陆")#姓名
sex = models.CharField(max_length=3,default="男")#性别
birthday = models.CharField(max_length=20,default="1887-10-31")#生日
job_number= models.CharField(max_length=10,default="0001")#工作证号
zhengzhi_mianmao = models.CharField(max_length=10,default="群众")#政治面貌
zhangzhi_time = models.CharField(max_length=20,default="2017-10-31")#入党时间
job = models.CharField(max_length=30,default="工程师")#职称
job_time = models.CharField(max_length=20,default="2017-10-31")#获得职称时间
job_2 = models.CharField(max_length=30,default="员工")#职务
id_number = models.CharField(max_length=30,default="510411199703033451")#身份证
xue_li = models.CharField(max_length=30,default="本科")#学历
school = models.CharField(max_length=30,default="四川农业大学")#学校
graduate_time = models.CharField(max_length=20,default="2000-12-12")#毕业时间
job_join_time = models.CharField(max_length=20,default="2002-12-12")#入职时间
team_belong = models.CharField(max_length=20,default="c640")#所属部门
phone = models.CharField(max_length=30,default="1328445999")#手机号

class Meta(AbstractUser.Meta):
    swappable = 'AUTH_USER_MODEL'

7.2更新数据库

	首先python manage.py makemigrations		
	然后再python manage.py migrate

在这里插入图片描述
7.3 为user模型添一些小功能(从生日导出年龄)

from datetime import datetime
import json,time

def birthday_filter(birthday):
    t=time.time()
    dt=datetime.fromtimestamp(t)

    b_year=birthday[:4]
    b_month=birthday[4:6]
    b_day=birthday[6:]
    age=int(dt.year)-int(b-year)-1
    if int(b_month)>(int(dt.month)-1):
        if int(b_day)>(int(dt.day)-1):
            age+=1
    return age
	
def __str__(self):
    return self.name
    
def age(self):
    return birthday_filter(self.birthday)

7.4修改admin.py

class UserAdmin(BaseUserAdmin):
fieldsets = (
    (None, {
        'fields': ('email', 'password','name','sex','birthday','job_number',
        'zhengzhi_mianmao','zhangzhi_time','job','job_time','job_2','id_number','xue_li',
        'school','graduate_time','job_join_time','team_belong','phone')
    }),
    (_('Permissions'), {
        'fields': ('is_active', 'is_staff', 'is_superuser',
                   'groups', 'user_permissions')
    }),
    (_('Important dates'), {
        'fields': ('last_login', 'date_joined')
    }),
)

add_fieldsets = (
    (None, {
        'classes': ('wide',),
        'fields': ('email', 'password1', 'password2')
    }),
)

form = UserChangeForm
add_form = UserCreationForm

list_display = ('name','email', 'is_active')
list_filter = (UserModelFilter, 'is_staff', 'is_superuser', 'is_active',)
search_fields = ('email',)
ordering = ('email',)
actions = ('activate_users', 'send_activation_email', )
readonly_fields = ('last_login', 'date_joined', )

八、启动服务器并访问

	python manage.py runserver 8003

访问user结果:
在这里插入图片描述

九、在主页上加入注册登录入口和登出按钮

9.1重新命名main中的bate.html文件
在users文件夹里也有一个base.html容易搞混,所以说名字一定要起长一些,避免重名,编程的时候最烦的就是和关键字重名。
在这里插入图片描述
9.2修改masite/main/view.py

	def index(request):
    	return render(request,"base.main.html")

9.3修改主页

<nav class="navbar navbar-default" role="navigation">
	<div class="container-fluid">
		<div class="navbar-header">
			<a class="navbar-brand" href="#">第一个网页</a>
		</div>
	<div>
	<ul class="nav navbar-nav">
		<li class="active"><a href="#">首页</a></li>
		<li><a href="#">代办事项</a></li>
		{% if request.user.is_authenticated %}
		<li><a href="#">当前用户:{{request.user.name}}</a></li>
		<li class="dropdown">
			<a href="#" class="dropdown-toggle" data-toggle="dropdown">
			    个人中心
			    <b class="caret"></b>
			</a>
			<ul class="dropdown-menu">
				<li><a href="#">定值工具</a></li>
				<li><a href="#">EJB</a></li>
				<li><a href="#">Jasper Report</a></li>
				<li class="divider"></li>
				<li><a href="#">修改个人信息</a></li>
				<li class="divider"></li>
				<li><a href="#">登出</a></li>
			</ul>
		</li>
		{% else %}
		<li><a href="#">登录</a></li>
		<li><a href="#">注册</a></li>
		{% endif %}
	</ul>
	</div>
	</div>
	</nav>

9.4修改mysite/urs.py

from django.urls import path,include
path('accounts/',include('users.urls'))

9.5修改主页basemain.html

/accounts/login/是登录, /accounts/logout/是登出, /accounts/register/是注册

在这里插入图片描述
9.6改良登录界面
找到users里的templates里的base.html打开它,在head标签里加上Bootstrap的引用

<link rel="stylesheet" type="text/css" href="/static/css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="/static/css/bootstrap-grid.css">
<script type="text/javascript" src="/static/js/jquery.js"></script>
<script type="text/javascript" src="/static/js/bootstrap.js"></script>

在下边的导航栏的class里加上一个navbar-inverse,如图(注意,我把原来的div改成了nav)
在这里插入图片描述
其他页面的修改过程是类似的,请自己去修改user文件夹下面的HTML文件

那么现在,点击登录!
在这里插入图片描述
页面跳转
原来django里面登录成功后默认会进入 /accounts/profile/地址,从字面意义上看是用户的个人信息修改页面,但是这个页面我们还没有写,所以当然就是404咯

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值