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入门使用示例

    以下是“Django入门使用示例”的完整攻略。 Django入门使用示例 本文将介绍Django的入门使用示例,包括如何创建Django项目和应用,如何定义模型,并进行数据迁移和数据查询等操作。本文的示例采用Django 3.2 版本。 创建Django项目和应用 首先,我们需要创建Django项目。在命令行中输入以下命令: django-admin sta…

    Django 2023年5月16日
    00
  • Django框架models使用group by详解

    那么我将给出一个完整的攻略,讲解如何在 Django 框架中使用 group by。 什么是 group by? group by 操作是一种 SQL 语句,它把数据集合分成多个小组,并对每个小组执行聚集函数,例如计算总和、平均值、最小值等。在 Django 框架中使用 group by,可以对数据进行分组,并进行聚合计算,以得出想要的统计结果。 在 Dja…

    Django 2023年5月16日
    00
  • Python – Django – ORM Django 终端打印 SQL 语句

    在 settings.py 中添加以下内容: LOGGING = { ‘version’: 1, ‘disable_existing_loggers’: False, ‘handlers’: { ‘console’:{ ‘level’:’DEBUG’, ‘class’:’logging.StreamHandler’, }, }, ‘loggers’: { ‘…

    Django 2023年4月10日
    00
  • django-admin引用百度地图

    实现的功能有,某个地点对应的经纬度自动填上,如果有经纬度的话,自动显示对应经纬度的地点,密匙在去百度地图引用搜索 <script type=”text/javascript” src=”http://api.map.baidu.com/api?v=2.0&ak=密匙”></script> <!–根据地址判断是否是添加批…

    Django 2023年4月12日
    00
  • Django实现邮件的发送(含源码)

    Django是一个Python Web框架,提供了极为强大的发送电子邮件的能力。下面将详细阐述Django如何实现邮件的发送。 配置邮件设置 在Django的settings.py文件中,添加以下配置: EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_…

    Django 2023年3月13日
    00
  • django 在保存数据前进行数据校验

    我们想在保存用户进入数据库之前做一些字段的校验,先贴出代码; import re from django.db import models from django.db.models.signals import pre_save from django.dispatch import receiver UNAME_REG = re.compile(r”^\…

    Django 2023年4月13日
    00
  • Django之drf的视图类

    目录 1. 视图相关 1.1. 请求与响应 1.1.1 Request 1.1.1.1 常用属性 1).data 2).query_params 1.1.2 Response 1.1.2.1 构造方式 1.1.2.2 常用属性 1).data 2).status_code 3).content 1.1.2.3 状态码 1)信息告知 – 1xx 2)成功 – …

    2023年4月10日
    00
  • Django中的DRF框架视图集使用

    1. 两个基类 1)APIView Django REST_framework 中所有视图的基类是APIView   父类是View 支持定义的属性: authentication_classes 列表或元祖,身份认证类 permissoin_classes 列表或元祖,权限检查类 throttle_classes 列表或元祖,流量控制类 在APIView中…

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