翻译|使用教程|编辑:陈津勇|2019-11-18 13:50:25.677|阅读 431 次
概述:如果您要向Django应用程序添加基本身份验证,本教程非常适用!本文从头开始构建应用程序,并使用Django身份验证系统通过用户名和密码对用户进行身份验证。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
CodeMix是一款解锁了VS Code的各种技术以及为Code OSS构建的附加扩展的插件。如果您在寻找一个IDE来使用Angular、React和Vue.js之类的框架或Python和Rust等语言进行开发,选择CodeMix一定能没错。Codemix与所有基于Eclipse的IDE和工具兼容,例如MyEclipse、Spring Tools Suite和JBoss Tools(所以,您可以通过来使用这款插件哦~)。
入门:配置开发环境
本教程中,我们使用安装了CodeMix插件的Eclipse IDE。除此之外,还需要在系统中安装Python。
配置
首先,在Eclipse中创建一个虚拟项目,并使用其终端执行几个命令来创建项目。

在本教程中,将使用Pipenv。可以在终端中使用以下命令来安装它:
pip install pipenv

激活Pipenv shell继续进行Django项目创建。在打开的Terminal +中,执行以下命令:
pipenv shell
然后安装Django软件包并创建一个新项目:
pipenv install django django-admin startproject DjangoAuth
命令django-admin startproject DjangoAuth将生成一堆文件以及包含django.contrib的模块(具备身份验证支持)。下面是新创建的Django项目的结构:

默认情况下,所需的配置包含在中settings.py。
# settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', # core of the authentication 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
现在,在pipenv shell上运行以下命令来创建服务器并运行它:
./manage.py migrate ./manage.py runserver

如上所示,开发服务器将在上进行监听。
构建应用
django.contrib.auth提供向应用程序添加身份验证所需的全部信息。下面,让我们一起来看看默认情况下这个模块提供了什么。
将模块的url包含在djangoauth/ URLs .py中:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('auth/', include('django.contrib.auth.urls')),
]创建身份验证模板。模板基本包含所需HTML输出的静态部分,以及将插入的动态内容的某些特殊语法。我们将通过在模板目录中创建替换模板来研究覆盖身份验证模板。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS':[os.path.join(BASE_DIR, 'Templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'djangoauth.wsgi.application'这些设置假定我们在项目的根目录中有一个模板目录。
Django模板利用了全局上下文处理器,该处理器基本上允许我们在模板之间使用数据,在这种情况下,我们定义的变量django.contrib.auth.context_processors.auth将借用经过身份验证的实际用户作为值,或者在没有用户登录的情况下,使用AnonymouseUser实例。
接下来,创建Templates目录,并创建一个Registration目录,并在其中创建一个login.html文件,如下所示:

因为需要显示没有任何CSS样式的默认表单,所以我们将使用Bootstrap。同样的,base.html在模板中创建一个文件并添加如下内容:
<!doctype html>
<html>
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<title>Diary</title>
<style>
html {
font-size: 14px;
}
label {
font-weight: 700;
display: block;
}
textarea:focus, input:focus{
outline: none;
border: none;
}
*:focus {
outline: none;
}
.form-control:focus {
border-color: inherit;
-webkit-box-shadow: none;
box-shadow: none;
}
.form-group {
border-bottom-width: 1px;
border-color: #e9ecef;
padding-top: 1rem;
padding-bottom: .5rem;
color: #22292f;
border-bottom: 1px solid #e9ecef;
}
.form-control {
border: none;
transition: background-color 5000s ease-in-out 0s;
margin-top: .75rem;
font-size: 100%;
line-height: 1.15; margin-left: -10px;
}
.remove-form-group-border {
border-bottom: 1px solid white;
}
body {
background: #f7f6f4;
}
a {
text-decoration: none;
}
.brand {
text-decoration: none;
}
.brand > span {
color: #633dff; font-size: 25px;
}
.btn {
background: #633dff; color: white; border-color: #633dff
}
.btn:hover {
color: white;
}
</style>
</head>
<body>
{% block content %}
{% endblock %}
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="//code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="//stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>现在,添加login.html的内容:
{% extends "base.html" %}
{% block content %}
<div class="container pt-5">
<div class="row justify-content-center">
<div class="col-lg-6 col-md-6 col-sm-8">
<h4 class="pt-2"><a href="#" class="brand"><span>CodeMix Django Tutorial</span></a>Log In</h4>
<br>
{% if form.errors %}
<div class="alert alert-danger alert-dismissible fade show" role="alert">
<strong>Your username and password didn't match. Please try again.</strong>
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
{% endif %}
<form method="POST" action="{% url 'login' %}" class="form">
{% csrf_token %}
<div class="form-group">
<label for="password">Username</label>
<input name="username" type="text" class="form-control" id="id_username" placeholder="username" style="background: #f7f6f4">
</div>
<div class="form-group">
<label for="password">Password</label>
<input name="password" type="password" class="form-control" id="id_password" placeholder="******" style="background: #f7f6f4">
</div>
<div class="form-group form-check remove-form-group-border">
<input type="checkbox" class="form-check-input" id="remember" name="remember" style="padding-top: -5px">
<label for="remember" class="form-check-label" style="margin-top: -5px">Remember Me</label>
<p class="float-right" style="margin-top: -25px">
<a href="{% url 'password_reset' %}" class="no-underline text-primary">Forgot your password?</a>
</p>
</div>
<input type="hidden" name="next" value="{{ next }}">
<button type="submit" class="btn btn-lg">Login</button>
<p class="float-right" style="margin-top: 0px">
</p>
</form>
</div>
</div>
</div>
{% endblock %}设置完所有内容后,可以使用Live Preview查看应用程序的外观。实现这一操作,只需要指定的URL运行应用程序,通过点击Live Preview中显示的URL和插入http://localhost:8000/auth/login/作为项目的默认URL。
现在应该看到一个类似于下面的登录屏幕:

创建用户
现在,需要通过使用CTRL + C终止服务器来创建新用户。在打开的Terminal +中执行以下命令并输入所需的登录详细信息,包括用户、电子邮件(可以省略)和密码:
./manage.py createsuperuser
为应用创建超级用户后,记住可以使用默认的Django管理工具管理用户库,可以通过进行访问。在这里,可以创建、消除或只是查看用户及其在网站上的特权。

现在,再次运行服务器并输入凭据,我们将被重定向到配置文件页面,该页面无没有任何要返回的内容。我们需要将用户重定向到实际的页面。
在DjangoAuth/settings.py文件中添加登录重定向URL和注销URL,如下所示:
LOGIN_REDIRECT_URL = '/' LOGOUT_REDIRECT_URL = '/'
在DjangoAuth/urls.py文件中导入模板视图,该文件应如下所示:
from django.contrib import admin
from django.urls import path, include
from django.views.generic.base import TemplateView
urlpatterns = [
path('admin/', admin.site.urls),
path('auth/', include('django.contrib.auth.urls')),
path('', TemplateView.as_view(template_name='home.html'), name='home'),
]
创建一个名为.template/home.html的新文件。
{% extends "base.html" %}
{% block content %}
<div class="text-black mt-10 mb-20">
<div class="container mx-auto">
<div class="flex justify-center flex-wrap">
<div class="w-full lg:w-2/3 px-5">
<h1 class="mb-5 text-center">CodeMix Tutorial</h1>
<h2 class="text-center mb-5">Develop Angular, React, Python and Vue app with ease</h2>
<p class="text-center">
{% if user.is_authenticated %}
<strong>{{ user.username }}</strong>, focus on developing with CodeMix
<a href="{% url 'logout' %}" class="btn btn-danger mt-5" style="background: red; border: 1px solid red">Logout here</a>
{% else %}
<a href="{% url 'login' %}" class="btn btn-primary">Login</a>
{% endif %}
</p>
</div>
</div>
</div>
</div>
{% endblock %}做到这里,就已经完成了在Django应用程序中添加基本身份验证。最终的结果应该是这样的:

慧都16周年·技术服务月,软件商城优惠券不限量免费领取,购CodeMix享折上折优惠>>>
更多产品资源、活动详情,请咨询了解

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ke049m.cn
文章转载自: