django2.0 快速实现登录

django2.0 快速实现登录

感想:

自己在网上搜索的一些博客里面的django的文章,有一些不完整,或者django的版本还是低版本,需要自己去修改,对于web应用来说,包括数据库的创建,前端页面的开发,以及中间逻辑层的处理三部分。 其实这些基本上是套路,能够熟悉应用就好。

本操作环境:

虚拟环境:django2.0 python3.5(应该python3.6都可以使用) window10

1.创建项目与应用(项目和应用都是自己制定的)

创建项目:django-admin startproject login

然后进入login文件夹里面 cd login

在当前目录下面创建一个app应用

python manage.py startapp app

操作顺序如下,workon django2.0,—->这个相当于开启虚拟环境(django2.0是虚拟环境的名称,自己随便定),启动虚拟环境之后,命令行提示符左边会有你使用的虚拟环境的名称出现

ps.如果自己的电脑上没装过django,最好直接安装最新版的,因为本文章是关于django2.0+python3.5的,当然也可以使用虚拟环境,网上都有这样的文章,之后我会写一篇使实用的虚拟环境的文章

F:\益达学习\django\django2.0项目>workon django2.0
(django2.0) F:\益达学习\django\django2.0项目>django-admin startproject login

(django2.0) F:\益达学习\django\django2.0项目>cd login

(django2.0) F:\益达学习\django\django2.0项目\login>python manage.py startapp app

login文件夹的目录结构如下:查看目录结构的—>tree /f

(django2.0) F:\益达学习\django\django2.0项目\login>tree /f
卷 娱乐 的文件夹 PATH 列表
卷序列号为 FEA8-6CC1
F:.
│  manage.py
│
├─app
│  │  admin.py
│  │  apps.py
│  │  models.py
│  │  tests.py
│  │  views.py
│  │  __init__.py
│  │
│  └─migrations
│          __init__.py
│
└─login
    │  settings.py
    │  urls.py
    │  wsgi.py
    │  __init__.py
    │
    └─__pycache__
            settings.cpython-35.pyc
            __init__.cpython-35.pyc

打开login\login\settings.py文件,将app(应用的名字)应用添加进去,同时进行一些设置

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app',      #注意后面那个分号记得打上去
]

#注释csrf,以防再次出现403的错误 

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    #'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

#设置为中文格式,使后台系统使用中文展示,和修改时间,这个看个人,有需要就修改
#设置编码、时区,不要使用zh-cn,这个不能用了
LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'
2.设计/修改Model(数据库)

打开login\app\models.py文件,添加如下内容:

from django.db import models

class User(models.Model):
    username = models.CharField(max_length = 50)
    password = models.CharField(max_length = 50)

创建两个字段,用户存放用户名、密码等。

生成迁移文件:根据模型类生成sql语句,迁移文件被生成到应用(app)的migrations目录

python manage.py makemigrations

执行迁移:执行sql语句生成数据表

python manage.py migrate

(django2.0) F:\益达学习\django\django2.0项目\login>python manage.py makemigrations
Migrations for 'app':
  app\migrations\0001_initial.py
    - Create model User

(django2.0) F:\益达学习\django\django2.0项目\login>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, app, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying app.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying sessions.0001_initial... OK
3.启动服务器,查看有没有错误出现

在此之前要创建超级管理员,以便登录到admin后台管理系统

创建管理员的密码是有一定规则的,还有就是邮件地址可以不写

(django2.0) F:\益达学习\django\django2.0项目\login>python manage.py createsuperuser
Username (leave blank to use 'asus-pc'): xyyojl
Email address:
Password:
Password (again):
Superuser created successfully.

访问http://127.0.0.1:8000/,看到django2.0的主页

这里写图片描述

访问admin

http://127.0.0.1:8000/admin/

登录用户名和密码是我刚才创建的管理员的用户和密码
这里写图片描述

进入到里面之后,只要默认的东西,因为我还没有在admin里面注册模型

这里写图片描述

3.创建视图(views.py)

①打开login\app\views.py文件,添加如下内容:

from django.shortcuts import render,render_to_response
from django.http import HttpResponseRedirect
from django import forms
from app.models import User
# Create your views here.
#定义表单模型
class UserForm(forms.Form):
    username = forms.CharField(label = '用户名 :',max_length = 50)
    password = forms.CharField(label = '密码 :',widget = forms.PasswordInput())

#登录
def login(request):
    if request.method == 'POST':
        uf = UserForm(request.POST)
        if uf.is_valid():
            #获取表单用户密码
            username = uf.cleaned_data['username']
            password = uf.cleaned_data['password']
            #获取的表单数据与数据库进行比较
            user = User.objects.filter(username__exact = username,password__exact = password)
            if user:
                return render_to_response('success.html',{'username':username})
            else:
                return HttpResponseRedirect('/login/')
    else:
        uf = UserForm()  
    return render_to_response('login.html',{'uf':uf}) 

登录的核心是拿到用户填写的表单数据(用户名、密码)与数据库里面的User表中的字段进行比较,根据比较结果做出不同的反应,如果在数据库有这些信息的话,就成功跳转到success.html页面(比较简陋),如果失败的话,还停留在原来的login.html,应该有一些提示功能比如是你输出的信息错误,请想想再输入之类的,后期继续完善。

4.创建前端页面

在逻辑层提到了两个页面,一个登录页面(login.html),一个登录成功页面(success.html)。所以我们要把这两个页面创建出来。

先在login\app目录下创建templates目录,接着在login\app\templates目录下创建login.html 文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>登录</title>
    <style>
        body{
            background-color: rgb(235, 239, 242);
            font-size: 16px;
        }
        .login{
            width: 340px;
            height: 280px;
            margin: 50px auto;
            border:1px solid rgb(203, 219,218);
        }
        .login form{
            width: 340px;
            background-color: rgb(254,254,254);
        }
        .login .forms{
            width: 300px;
            margin: 0 auto;
            padding:10px 0 20px 0;
        }
        .login label{
            display: inline-block;
            width: 300px;
            padding-bottom: 8px;
        }
        .login input{
            width: 300px;
            height: 35px;
            border:none;
            outline: none;
            border:1px solid rgb(203, 219,218);
            background-color: #fff; 
            font-size: 18px;
            text-indent: 6px;
            border-radius: 5px;
        }
        .btn{
            width: 340px;
            padding: 15px 0;
            border-top: 1px solid #ccc;
            background-color:rgb(240,245,248);
        }
        .btn div{
            overflow: hidden;
            width: 300px;
            margin: 0 auto;
        }
        .btn button{
            float:right;
            padding:8px 16px;
            background: rgb(157, 211, 239);
            border:1px solid #ccc;
            border-radius: 5px;
            color: #fff;
        }
        .btn a{
            float:left;
            padding: 5px 0;
            text-decoration: none;
            color:#ccc;
        }
    </style>
</head>
<body>
    <div class="login">
        <form action="" method="post"  enctype="multipart/form-data">
           <div class="forms">
                {% csrf_token %}
                {{uf.as_p}}
           </div>
            <div class="btn">
                <div>
                    <a href="#">忘记密码?</a>
                    <button type ='submit'>登录</button>
                </div>
            </div>
        </form>
    </div>
</body>
</html>

在login/app/templates/目录下创建success.html 文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>欢迎{{username}}</title>
</head>
<body>
    <h1>恭喜{{username}},登录成功!</h1>
</body>
</html>
5.设置url

打开login\login\urls.py文件,添加如下内容:

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    #http://127.0.0.1:8000/login/
    path('login/',include('app.urls')),
]

在login\app目录下创建urls.py文件:

from django.urls import path
from app import views
#from . import views  这个也可以使用,跟上面那个一样的
urlpatterns = [
    path('', views.login,name = 'login'),
]
6.向admin注册User的模型

打开login/app/admin.py文件,注册模型,添加如下内容:

from django.contrib import admin

# Register your models here.
from app.models import User
admin.site.register(User)
7.访问注册页面

当前面的工作都做完之后,我们启动服务器

(django2.0) F:\益达学习\django\django2.0项目\login>python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
May 18, 2018 - 19:10:47
Django version 2.0.4, using settings 'login.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

访问http://127.0.0.1:8000/admin/

这里写图片描述

然后添加一个user,填写用户名和密码

这里写图片描述

访问http://127.0.0.1:8000/login/

使用上面增加的user的信息,登录

这里写图片描述

登录成功的页面时:

这里写图片描述
注意:上面这是简单的实现登录,并不是完整的,只是实现大体的的功能,希望多多体谅
参考资料:虫师的django快速实现文件上传

Django是一个使用Python编写的Web应用程序框架,它提供了许多强大的工具和功能来帮助开发人员快速构建高效的Web应用程序。 要玩转Django 2.0代码,首先需要安装Django 2.0,并且熟悉其基本的目录结构和文件组织方式。在创建一个新的Django项目时,可以使用命令行工具来生成基本的项目结构,然后在其中创建应用程序并定义模型、视图和模板。 在使用Django 2.0开发Web应用程序时,需要熟悉Django的MTV(模型-模板-视图)架构,这是Django应用程序的核心概念。模型用于定义数据结构和处理数据库操作,视图负责处理用户请求并返回响应,模板则用于生成最终的用户界面。 此外,了解如何使用Django 2.0的路由系统来处理URL映射和视图函数的调度也非常重要。可以使用Django的路由配置来定义URL模式,并将它们映射到相应的视图函数上。 另外,了解Django 2.0的表单处理、认证和权限管理功能也是必不可少的。Django提供了丰富的表单组件和验证工具,可以帮助开发人员快速构建复杂的表单。而用户认证和权限管理方面,Django提供了强大的认证和授权系统,可以帮助开发人员轻松实现用户注册、登录和权限控制。 总之,要玩转Django 2.0代码,需要深入了解Django的核心概念和功能,并且通过实际的项目实践来提升自己的编码技巧和经验。希望以上回答能帮助你更好的学习和应用Django 2.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值