Django开发笔记六
1、登录功能完善
登录成功应该是重定向到首页,而不是转发,当前用户信息保存到session:
class LoginView(View):
def get(self, request):
return render(request, "login.html", {}) def post(self, request):
user_name = request.POST.get("username", "")
pass_word = request.POST.get("password", "")
user = authenticate(username=user_name, password=pass_word) if user is not None:
dj_login(request, user)
request.session['currentUser'] = json.dumps(user, default=UserProfile.user2json)
return HttpResponseRedirect("/")
else:
return render(request, "login.html", {'msg': None})
用户需要提供序列化方法:
class UserProfile(AbstractUser):
nickname = models.CharField(max_length=50, verbose_name=u"昵称")
birthday = models.DateField(max_length=50, null=True, blank=True, verbose_name=u"生日")
gender = models.CharField(choices=(("male", u"男"), ("female", u"女"), ("secret", u"保密")), default=u"secret",
max_length=10)
address = models.CharField(max_length=100, default=u"")
mobile = models.CharField(max_length=11, null=True, blank=True)
image = models.ImageField(upload_to="user/%y/%m", default=u"images/default/user_default.png",
max_length=100)
add_time = models.DateTimeField(default=datetime.now) class Meta:
verbose_name = u"用户"
verbose_name_plural = verbose_name
ordering = ["-id"] def __unicode__(self):
return self.username def user2json(self):
return {'username': self.username, 'nickname': self.nickname, 'id': self.id, 'image': self.image.url}
xadmin在后台添加用户也需要加密:
xadmin添加用户应该是可以配置密码加密类型的,但是我没找到,所以修改源码:
xadmin/views/edit.py
@filter_hook
def isave_forms(self):
self.new_obj = self.form_obj.save(commit=False)
# 后台添加用户默认密码是123456
if self.request.get_full_path() == '/admin/users/userprofile/add/':
setattr(self.new_obj, 'password', make_password('123456'))
之所以setattr,是应为self.new_obj['password']=make_password('123456'))直接赋值报错('UserProfile' object does not support item assignment).
Django开发笔记六的更多相关文章
- Django开发笔记五
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.页面继承 定义base.html: <!DOC ...
- Django开发笔记四
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.邮箱激活 users app下,models.py: ...
- Django开发笔记三
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.基于类的方式重写登录:views.py: from ...
- Django开发笔记二
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.xadmin添加主题.修改标题页脚和收起左侧菜单 # ...
- Django开发笔记一
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.运行 python manage.py runser ...
- Django开发笔记(一)
Django开发笔记(一) 标签(空格分隔): Django Python 1. 创建并运行Django项目 创建开发环境 安装Django pip install django==version 执 ...
- Django开发笔记之数据库的设计
后台采用Django开发,可以体会到开发的便利之处,对于一个项目来说,首先最重要的是数据库的设计,那么在Django下数据库设计主要是如下步骤: 1,需求分析,这点子不用多说,而我也深刻体会到了没有原 ...
- Django开发笔记
django基础之视图 1.在Django中网页前端的页面和其他内容都是由视图来传递的(视图对web请求进行回应)Django通过检查请求的URL(准确地说,是URL里域名之后的那部分)来选择使用哪个 ...
- django 开发笔记1
1.布置到云服务器 使用 python3 manage.py runserver提示错误,需要将settings.py 中 ALLOWED_HOSTS 字典中加入 localhost;0.0.0.0; ...
随机推荐
- Redis无法保存ef复杂对象
最近项目需要使用redis. 然后我就满怀激情开始处理数据层了.在原来查询数据的基础上,有封装了一个redis缓存层. 结果在redis保存ef对象的时候,发现了一个非常尴尬的问题. model: p ...
- Spring bean默认为单例模式会引发并发问题吗
在web项目中使用spring,如果网站同时很多人访问,这时候使用spring默认的单例模式的bean是否合适呢?回不回影响效率或者产生交叉呢? Spring默认的单例模式的bean,因为是单例的,所 ...
- UVa - 12050
A palindrome is a word, number, or phrase that reads the same forwards as backwards. For example,the ...
- hg和git命令对照表
hg和git命令对照表 来源 https://github.com/sympy/sympy/wiki/Git-hg-rosetta-stone Git hg rosetta stone muxat ...
- 自学Zabbix3.12.5-动作Action-Condition配置
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 3.12.5 自学Zabbix3.12.5-动作Action-Condition配置 报警,肯定是 ...
- centos7安装redis的正确姿势
目前redis5已经发布,Redis 5 是 Redis 引入流数据类型(Stream data type)的第一个版本.按照官方的说法,不使用该特性的用户在生产环境中使用 Redis 5 会有更好的 ...
- Win10删除anaconda重装
1.找到anaconda安装的文件夹,找到Uninstall-Anaconda.exe,左键双击运行: 2.然后就按照提示开始卸载,会看到如下: 就会卸载完了,然后你就会发现anaconda所在的文件 ...
- noip2013火柴排队_Solution
要想对任意(ai,bi)和(aj和bj),当ai<aj时,都有bi<=bj:当ai>=aj时,bi>=bj,当对a进行升序排序后(b同时发生改变,从而不改变值,最后有a1& ...
- 多行文本文本输入框 textarea 可点击任意地方编辑的问题
遇到了一个问题: textarea可以点击任意地方编辑 原因: textarea中间我换行了 改成: 就正常了.
- 泛型集合List(C#)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace List ...