django+python3+mysql 實現簡單的用戶登陸/註銷

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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章