Django实战之用户认证(初始配置)

下面是详细讲解“Django实战之用户认证(初始配置)”的完整攻略。

概述

在Django项目中,用户认证是必不可少的一步。Django提供了一套完善的用户认证系统,可以方便地实现用户的认证、注册、密码重置等功能。本文将介绍Django用户认证的初始配置过程。

准备工作

在开始之前,需要做以下准备工作:

  • 安装Django:使用pip安装Django,可以输入以下命令安装最新版本:

pip install django

  • 创建Django项目:使用Django命令行工具创建项目。

django-admin startproject myproject

配置用户认证

Django的用户认证系统默认是关闭的,需要手动开启。接下来我们将对Django的用户认证系统进行配置。

修改settings.py

myproject目录下的settings.py文件中,找到以下配置项:

INSTALLED_APPS = [
    ...
    # 'django.contrib.admin',
    # 'django.contrib.auth',
    # 'django.contrib.contenttypes',
    # 'django.contrib.sessions',
    # 'django.contrib.messages',
    # 'django.contrib.staticfiles',
]

django.contrib.auth解除注释:

INSTALLED_APPS = [
    ...
    # 'django.contrib.admin',
    'django.contrib.auth',
    # 'django.contrib.contenttypes',
    # 'django.contrib.sessions',
    # 'django.contrib.messages',
    # 'django.contrib.staticfiles',
]

注: 这里我们只需要引入django.contrib.auth这个模块。

然后,在该文件中找到MIDDLEWARE配置项:

MIDDLEWARE = [
    ...
    # 'django.middleware.security.SecurityMiddleware',
    # 'django.contrib.sessions.middleware.SessionMiddleware',
    # 'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    # 'django.contrib.auth.middleware.AuthenticationMiddleware',
    # 'django.contrib.messages.middleware.MessageMiddleware',
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

django.contrib.auth.middleware.AuthenticationMiddleware解除注释:

MIDDLEWARE = [
    ...
    # 'django.middleware.security.SecurityMiddleware',
    # 'django.contrib.sessions.middleware.SessionMiddleware',
    # 'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    # 'django.contrib.messages.middleware.MessageMiddleware',
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

注:这里我们开启了中间件django.contrib.auth.middleware.AuthenticationMiddleware,用于在用户认证时对请求进行检查。

创建数据库表

在配置完用户认证系统之后,我们需要创建相应的数据库表。填写以下命令:

python manage.py makemigrations
python manage.py migrate

上述命令将会创建auth应用所需的数据表, migrate命令将这些表迁移到数据库中。

创建超级用户

在开始用户认证之前,我们需要先创建一个超级用户,用于管理用户。

python manage.py createsuperuser

填写超级用户账号、电子邮件和密码等信息。完成后,将创建一个超级用户账号。

现在我们的用户认证系统已经配置好了,接下来我们将实现一个用户注册和登录的功能。

示例说明

下面将通过两个实例来说明用户注册和登录的功能。

示例1:用户注册

  1. 在myproject目录下,创建一个新的应用(app):

python manage.py startapp user

  1. user 应用主目录下创建urls.py 文件用于url映射,添加以下内容:

```
from django.urls import path
from . import views

urlpatterns = [
    path('register/', views.register),
]

```

  1. user 应用主目录下创建views.py 文件,添加以下代码:

```
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from django.contrib import messages

def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
messages.success(request, f'Account created for {username}!')
return redirect('home')
else:
form = UserCreationForm()
return render(request, 'register.html', {'form': form})
```

  1. 创建 register.html, 添加以下内容:

```
{% extends 'base.html' %}

{% block content %}

Register Here

{% csrf_token %}
{{ form.as_p }}

{% endblock %}
```

  1. 在myproject目录下的urls.py文件中,添加注册的URL映射:

```
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('user.urls')),
]
```

  1. 运行服务器:

python manage.py runserver

打开浏览器并输入 http://127.0.0.1:8000/register/ ,打开注册页面,填写用户名和密码,点击注册按钮即可完成注册。注册完成后会返回到主页。

示例2:用户登录

先在之前的user应用主目录下创建urls.py,添加以下内容:

from django.urls import path
from . import views

urlpatterns = [
    path('login/', views.login),
]

views.py 文件中添加以下代码:

from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from django.contrib import messages

def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('home')
        else:
            messages.info(request, 'Invalid credentials')
    return render(request, 'login.html')

然后是登录的HTML模板, 在user应用主目录下创建login.html文件,添加以下内容:

{% extends 'base.html' %}

{% block content %}
  <h2>Login Here</h2>
  <form method="post">
    {% csrf_token %}
    <label for="username">Username:</label>
    <input type="text" id="username" name="username">
    <label for="password">Password:</label>
    <input type="password" id="password" name="password">
    <button type="submit">Login</button>
  </form>
{% endblock %}

接下来在myproject应用主目录下的urls.py文件中,添加登录URL的映射:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('user.urls')),
    path('login/', include('user.urls')),
]

运行服务器:

python manage.py runserver

打开浏览器并输入 http://127.0.0.1:8000/login/ ,打开登录页面,填写之前注册的用户名和密码,点击登录按钮即可完成登录。登录完成后会返回到主页。

以上就是Django用户认证(初始配置)的完整攻略,同时这包含了两条示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django实战之用户认证(初始配置) - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Django介绍

    1. 简介 Django,发音为[`dʒæŋɡəʊ],是用python语言写的开源web开发框架,并遵循MVC设计。 劳伦斯出版集团为了开发以新闻内容为主的网站,而开发出来了这个框架,于2005年7月在BSD许可证下发布。 这个名称来源于比利时的爵士音乐家DjangoReinhardt,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。 由于Djang…

    Django 2023年4月13日
    00
  • Django url标签详解

    Django中提供了一个url标签,它可以用于生成URL,这对于模板中的链接很有用。url标签可以帮助我们在模板中对应用程序中的视图进行链接,因此我们可以展示数据无需手动构建URL。 url语法: {% url 'url_name' arg1 arg2 … %} url_name: URLconf中定义的名称(或视图)。 arg1, …

    Django 2023年3月12日
    00
  • django初始化数据库的实例

    下面是 Django 初始化数据库的实例攻略: 准备工作 在Django项目中进行数据库操作之前,需要先在 settings.py 中配置数据库信息。具体数据库的设置信息包括: 数据库的类型 数据库的名称 用户名和密码 数据库的 Host 和 Port 其他一些可选项 本文将以 PostgreSQL 数据库为例,介绍如何初始化数据库。在开始之前,需要确保已安…

    Django 2023年5月16日
    00
  • 深入浅析Django MTV模式

    关于深入浅析Django MTV模式的完整攻略,我将详细阐述如下。 MTV模式概述 Django框架采用的是MTV模式,也就是Model-Template-View(模型-模板-视图)模式,是一种用于构建Web应用程序的软件设计模式。在这种模式中,Model负责数据存储和处理,Template负责用户交互页面设计,View负责进行逻辑处理和数据渲染。 MTV…

    Django 2023年5月16日
    00
  • python+Django CRM客户关系管理系统开发(一)–admin首页功能实现

    一、项目介绍 学习crm管理系统开发,将详细步骤记录在这里。 主要需求是,做一个培训机构的客户关系管理系统,通过后台能够管理学生,老师,销售 二、思路 做一个后台管理系统,仿照着Django的admin,做一个管理系统,好处是能够与项目结合,以后可以复制到其他项目中 初步分析,表结构如下: 这里就不放表了,自己随便写几个表就行 三、backadmin功能开发…

    Django 2023年4月11日
    00
  • django, django_restful 关于Authentication的学习总结

    一、关于配置 django: 配置为AUTHENTICATION_BACKENDS,setting.py不写的话,AUTHENTICATION_BACKENDS默认设置为(‘django.contrib.auth.backends.ModelBackend’,),           这是检测Django用户数据库的基本认证方案。按照 AUTHENTICAT…

    Django 2023年4月13日
    00
  • Django框架(十八)—— drf:序列化组件(serializer)

    序列化组件 # 模型层 from django.db import models class Book(models.Model): nid = models.AutoField(primary_key=True) name = models.CharField(max_length=32) price = models.DecimalField(max_d…

    Django 2023年4月16日
    00
  • Django Admin 后台Admin继承UserAdmin增加用户密码不显示明文和用户登录不了的解决方法

    Django后台Admin继承UserAdmin增加用户不显示明文方法 1.在 models.py 中用户表 # 导包规范-1.Python标准模块 from django.db import models from django.contrib.auth.models import AbstractUser # AbstractUser继承原用django…

    Django 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部