Django入门笔记:身份认证模块
时间:2022-07-28
本文章向大家介绍Django入门笔记:身份认证模块,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
从之前的学习我们发现,一直在blog
应用中进行开发。本章开始新建另一个App来开发,介绍Django的身份认证模块,实现用户登录、注册、注销。
一个简单的登录界面
创建应用
为了实现用户登录、退出、注册等功能,从而进行用户管理,创建一个新的应用。
python manage.py startapp accounts
然后我们就多了一个accounts
目录,然后在/myblog/settings.py
中对新应用进行配置。
INSTALLED_APPS = [
...,
'blog',
'accounts',
]
在./accounts目录中创建urls.py
文件,然后设置本应用中的路径。
from django.urls import path
from . import views
app_name = "accounts"
urlpatterns = [
path('login/', views.user_login, name='user_login'),
]
然后在./myblog/urls.py
配置accounts
应用的URL配置:
from django.contrib import admin
from django.urls import path, include
from django.conf.urls import url
from blog import views
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^$', views.home, name='home'),
path('<int:article_id>/', views.blog_article),
path('accounts/', include('accounts.urls', namespace='accounts')), # 新增
]
基本配置到位,接下来我们设计用户登录界面:
登录表单设计
在./account
目录下新建forms.py
,代码如下:
from django import forms
class LoginForm(forms.Form):
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput)
登录视图函数
编辑./account/views.py
文件,实现user_login()
的视图函数:
from django.shortcuts import render, HttpResponse
from django.contrib.auth import authenticate, login
from . forms import LoginForm
# Create your views here.
def user_login(request):
if request.method == "POST":
login_form = LoginForm(request.POST)
if login_form.is_valid():
cd = login_form.cleaned_data
user = authenticate(username=cd['username'], password=cd['password'])
if user:
login(request, user)
return HttpResponse("欢迎你,登录成功")
else:
return HttpResponse("抱歉,用户名或者密码错误")
else:
return HttpResponse("登录非法")
else:
login_form = LoginForm()
return render(request, "accounts/login.html", {"form": login_form})
登录前端界面
在./templates/accounts/login.html
模板,代码如下:
{% extends "base.html" %}
{% block title %}登录{% endblock %}
{% block content %}
<div class="container text-center" >
<h1>用户登录</h1>
<p>
输入你的用户名和密码
</p>
<form action="." method="post">
{% csrf_token %}
{{ form.as_p }}
<p><input type="submit" value="登录"></p>
</form>
</div>
{% endblock %}
修改./templates/base.html
,代码如下:
{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
</head>
<body>
<div id="header">
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container" >
<a class="navbar-expand" href="{% url 'home' %}">主页</a>
<ul class="nav navbar-nav navbar-light" style="margin-right: 10px">
<li><a href="{% url 'accounts:user_login' %}">登录</a> </li>
</ul>
</div>
</nav>
</div>
<div class="container">
<div id="content">
{% block content %}
{% endblock %}
</div>
</div>
</body>
</html>
- Python编程任务 | 斯坦福CS231n-深度学习与计算机视觉课程
- ofbiz实体引擎(二) delegator实例化具体方式
- ofbiz实体引擎(一) 获取Delegator
- 12个非常实用的JavaScript小技巧
- 关于PHP浮点数精度损失问题
- FreeMarker与JSP 2.0 + JSTL组合进行比较
- 从零开始学设计模式(1):基础编程模式
- 机器学习实战 | 第四章:模型验证和选择
- ofbiz中FreeMarkerWorker的makeConfiguration方法
- 后台进程(守护进程)自动备份PostgreSQL数据库
- 了解这些PHP小技巧吗?
- 结构体字节对齐
- 在Atom中设置Python开发环境
- Assignment 3 (神经网络) | 斯坦福CS231n-深度学习与计算机视觉课程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- docker-compose 安装jenkins的正确姿势 实践笔记
- windows安装nginx注册为服务的正确姿势 并设置开机自启 实践笔记
- windows navicat连接oracle11G 自用 实践笔记
- docker安装官方redis集群并集群连接测试 的正确姿势 自用 实践笔记
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(一):Jenkins安装
- Centos7安装轻量级TCP转发工具rinetd注册为服务的正确姿势 并设置开机自启 实践笔记 自用
- Connection open error . Connection Timeout Expired. The timeout period elapsed during the post-login
- macbook-12-2015款 安装win10系统 自用 实践笔记
- OpenGL ES 之attribute
- windows server 2012 r2 搭建文件服务器 问题记录 自用 实践笔记
- OpenGL ES 之uniform和varying
- OpenGL ES 绘制纹理
- Win10+Unlocker3+VMware15.5+MacOS10.14+xcode+QT for ios+虚拟机苹果系统 自用 实践笔记
- OpenGL ES 纹理过滤模式-glTexParameteri
- Jenkins时间修改为北京时间