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>

 

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