翻譯|使用教程|編輯:陳津勇|2019-11-18 13:50:25.677|閱讀 412 次
概述:如果您要向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??梢栽诮K端中使用以下命令來安裝它:
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@fc6vip.cn
文章轉載自: