1.創建一個app (命令:python3 manage.py startapp login)
2.設置項目settings.py文件
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'login', #添加應用
]
#連接好數據庫
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'search', #數據庫名字
'USER':'root', #登陸數據庫的用戶名
'PASSWORD':'123456', #登陸數據庫的密碼
'HOST':'localhost', #數據庫的ip地址
'PORT':'3306', #ip地址的端口號,默認(3306)
}
}
#加入模板Templates
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],#加入模板文件
'APP_DIRS': True,
3.配置總項目的urls.py文件
from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/',include('login.urls')),#添加此項
]
4.配置login應用下的urls.py文件
from django.conf.urls import url
from login import views
urlpatterns =[
url(r'^day_logins/',views.login),
url(r'^logout/',views.logout),
url(r'index',views.index),
url(r'register',views.regist),
]
5.創建模型在login應用下的models.py文件裏,然後遷移文件和創建數據庫(python manage.py makemigrations)(python manage.py migrate)
from django.db import models
# Create your models here.
class user(models.Model):
u_name = models.CharField(max_length=10)#保存用戶名
u_password = models.CharField(max_length=255)#保存密碼
class Meta:
db_table='user'
6.login應用中的views(視圖)寫相應的方法
from django.shortcuts import render,render_to_response
from django import forms
from django.http import HttpResponseRedirect,HttpResponse
from .models import user
from django.contrib.auth.hashers import make_password,check_password
from django.views.decorators.csrf import csrf_exempt
class UserForm(forms.Form):
username = forms.CharField(label='用戶名',max_length=10)
password = forms.CharField(label='密碼',widget=forms.PasswordInput())
#處理登錄的方法
@csrf_exempt
def login(request):
if request.method == 'GET':
return render(request,'login.html')
if request.method == 'POST':
data = UserForm(request.POST)
if data.is_valid():
#獲取到表單提交的值
username = data.cleaned_data['username']
password = data.cleaned_data['password']
#把表單中取到的值和數據庫裏做對比
try:
use= user.objects.get(u_name=username)
if password == use.u_password:
response = HttpResponseRedirect('/index/')
return response
else:
response = HttpResponseRedirect('/login/')
return response
except:
response = HttpResponseRedirect('/login/')
return response
else:
response = HttpResponseRedirect('/login/')
return response
def logout(request): #退出登錄的方法
if request.method == 'GET':
response = HttpResponseRedirect('/login/')
return response
def index(request):
if request.method =='GET':
return render(request,'index.html')
7.對應的模板文件
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/login/logout/"><span>退出</span></a>
</body>
</html>
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/login/day_logins/" method="post">
<div><span>用戶名:</span><input type="text" name="username"></div>
<div><span>密碼:</span><input type="password" name="password"></div>
<div><input type="submit" value="登錄"></div>
</form>
</body>
</html>