django 用户认证
来源:互联网 发布:银行核心业务系统数据 编辑:程序博客网 时间:2024/06/09 11:03
覆盖auth model
有时候django本身提供的auth表中的字段不能满足我们的需求,就需要对原有的auth model进行扩展.
在models.py中这样定义:
class UserProfile(AbstractUser): nick_name = models.CharField('昵称', max_length=50, default='')
那么在settings.py就要这样配置:
AUTH_USER_MODEL = "authentication.UserProfile"
修改 authenticate方法
为了让用户登录的时候可以使用 用户名+密码 和 邮箱+密码 两种方式来登录系统.
在views.py 中这样定义
from django.contrib.auth.backends import ModelBackendfrom django.db.models import Qclass CustomBackend(ModelBackend): def authenticate(self, username=None, password=None, **kwargs): try: user = UserProfile.objects.get(Q(username=username) | Q(email=username)) if user.check_password(password): return user except: return None
在settings.py 中就要这样配置:
AUTHENTICATION_BACKENDS = ( 'authentication.views.CustomBackend',)
Django Simple Captcha
1 . 安装插件
apt-get -y install libz-dev libjpeg-dev libfreetype6-dev python-dev
2 . 在settings 中添加captcha 这个app
EXTRA_APPS 是我设置用来存放第三方app的列表,
也可以直接在INSTALLED_APPS中添加.
EXTRA_APPS = [ 'captcha',]
3 . 在urls.py添加captcha的url
url(r'^captcha/', include('captcha.urls')),
4 . 新建form
下面是一个注册的验证表单
class RegisterForm(forms.Form): email = forms.EmailField(required=True) password = forms.CharField(required=True, min_length=5) captcha = CaptchaField(error_messages={"invalid": "验证码出错了"})
5 . 使用
在views中这样使用
class RegisterView(View): @staticmethod def get(request): register_form = RegisterForm() return render(request, 'authentication/register.html', {'register_form': register_form})
在template中这样使用:
<form id="register_form" method="post" action="{% url 'test' %}" autocomplete="off"> {% csrf_token %} {{ register_form.captcha }} <input type="submit" value="提交"></form>
生成的前端代码如下:
<form id="register_form" method="post" action="/user/test" autocomplete="off"> <input name="csrfmiddlewaretoken" value="ws6dQwx3zh8632bNycWstdm3ZEDdHeR0NLWZbq06JpAqHrikSrRqx7HLjmeffsqL" type="hidden"> <img src="/captcha/image/f3cb5a208550bf6ae7daaaf0f0191677842c4a68/" alt="captcha" class="captcha"><input id="id_captcha_0" name="captcha_0" value="f3cb5a208550bf6ae7daaaf0f0191677842c4a68" type="hidden"> <input autocapitalize="off" autocomplete="off" autocorrect="off" spellcheck="false" id="id_captcha_1" name="captcha_1" type="text"> <input value="提交" type="submit"></form>
添加如下的javascript代码,可以实现点击验证码更换:
要先添加jquery的引用
<script> //刷新验证码 function refresh_captcha(event) { $.get("/captcha/refresh/?" + Math.random(), function (result) { $('#' + event.data.form_id + ' .captcha').attr("src", result.image_url); $('#id_captcha_0').attr("value", result.key); }); return false; } //注册刷新验证码点击事件 $('#register_form .captcha').click({'form_id': 'register_form'}, refresh_captcha);</script>
阅读全文
0 0
- django 用户认证
- django用户认证
- Django中的用户认证
- Django中的用户认证
- Django 中的用户认证
- Django 中的用户认证
- Django用户认证系统
- django 用户认证系统
- Django 中的用户认证
- django 用户认证
- django的用户认证
- django中的用户认证
- Django 中的用户认证 2014
- django 用户认证 user对象
- Django点滴(三)---用户认证
- Django用户认证系统 authentication system
- Django自定义用户认证系统Customizing authentication
- django的用户认证实现过程
- HDU 2030 汉字统计
- JAVA 比较两个日期相差的天数
- 总结/多态
- springMVC的xml相关配置
- 关于项目开发和管理的思考和成长
- django 用户认证
- SVD++
- 【C语言】预处理(部分内容未整理)
- 入门:学习《Head First HTML与CSS》
- 索引
- 从输入URL到页面加载显示完成的过程
- 8.活动的启动模式
- 1042. Shuffling Machine (20)
- Spark SVDPlusPlus 源码分析