• Django 注册、展示、登陆功能


    Django 注册、展示、登陆功能

    环境:

    pycharm 201902
    Python 2.7.13
    Django 1.11.6
    

    一、注册:

    1. 新创建 project    File->NewProject->Django->选择项目存放路径,命名 test18 ->下拉 -> 选择 Existing interpreter (Python2.7)
    2. cmd 新建应用
    python manage.py startapp student
    3.编辑 settings.py 文件,新增加app 名称:
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'student',
    ]
    4.配置test18/urls 
    from django.conf.urls import url, include
    from django.contrib import admin
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^register/'include('student.urls'))
    ]
    5.在student 目录下新增加 urls.py
    
    #coding=utf-8
    
    from django.conf.urls import url
    import views
    
    urlpatterns = [
        url(r'^$',views.index_views)
    ]
    
    6.编辑 student/views.py
    
    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    from django.http import HttpResponse
    from django.shortcuts import render
    
    # Create your views here.
    def index_views(request):
        # 获取请求参数,即获取请求方式
        m = request.method
        #页面渲染,获得注册页面,为GET 请求
        if m == 'GET':
            return render(request,'register.html')
        #action="/register/" method="post",定死了提交需要用到post 方式,post 请求需要将获取到的数据注册到数据库里
        elif m == 'POST':
            uname = request.POST.get('uname','')
            pwd = request.POST.get('pwd','')
            return HttpResponse(m)
    7.编辑 temlates 下的register.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="/register/" method="post">
        {% csrf_token %}
        <p>
            <label>用户名: </label> <input type="text" name="uname"/>
        </p>
        <p>
            <label>免密: </label> <input type="password" name="pwd"/>
        </p>
        <p>
            <input type="submit" value="注册"/>
        </p>
    </form>
    </body>
    </html>
    
    8.启动服务后本地浏览器输入:http://127.0.0.1:8000/register/
    
    出现注册页面
    点击注册后出现 POST 
    
    9.与数据库进行交互
    编辑 student/models.py
    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    from django.db import models
    
    # Create your models here.
    
    class Student(models.Model):
        sname = models.CharField(max_length=30,unique=True)
        spwd = models.CharField(max_length=30)
    
    
    10.在 windows cmd 执行命令
    python manage.py migrate # 创建表结构
    python manage.py makemigrations student # 让 Django 知道我们在我们的模型有一些变更
    python manage.py migrate student# 创建表结构
    
    11.navicat 打开后出现 student_student 表,查看表结构,有 id sname spwd ,接下来可以操作数据库
    12.编辑 student/views.py 增加post 之后的逻辑,逻辑为将注册的数据插入到数据库中
    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    from django.http import HttpResponse
    from django.shortcuts import render
    
    # Create your views here.
    from student.models import Student
    
    
    def index_views(request):
        # 获取请求参数,即获取请求方式
        m = request.method
        #页面渲染,获得注册页面,为GET 请求
        if m == 'GET':
            return render(request,'register.html')
        #action="/register/" method="post",定死了提交需要用到post 方式,post 请求需要将获取到的数据注册到数据库里
        elif m == 'POST':
            #接收参数并为变量赋值
            uname = request.POST.get('uname','')
            pwd = request.POST.get('pwd','')
            #判断是否非空,不为空点击注册按钮会插入数据到数据库中,并打印注册成功!如果为空会打印注册失败
            if uname and pwd:
                stu = Student(sname=uname,spwd=pwd)
                stu.save()
                return HttpResponse('注册成功!')
            return HttpResponse('注册失败!')
    
    13. 查看数据库,已将注册的数据插入到数据库中!http://127.0.0.1:8000/register/
    
    

    二、显示注册信息

    要求效果,访问http://127.0.0.1:8000/student/show/

    1.编辑 test18/urls.py
    新增加 url
    url(r'^student/',include('student.urls'))
    
    2.编辑 student/urls.py,新增加url 
    url(r'show/$',views.show_views)
    3. 编辑 student/views.py
    def show_views(request):
        #查询 student 表中的所有数据
        stus = Student.objects.all()
        return render(request,'show.html',{'students':stus})
    4.新增加 templates/show.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <table border="1" cellspacing="0" width="500px">
            <tr>
                <th>编号</th>
                <th>姓名</th>
                <th>密码</th>
            </tr>
           {% for stu in students %}
               <tr>
                    <td>{{ stu.id}}</td>
                    <td>{{ stu.sname}}</td>
                    <td>{{ stu.spwd}}</td>
               </tr>
            {% endfor %}
        </table>
    </body>
    </html>
    
    运行实现效果!
    

    三、 登陆验证

    1.修改 settings.py
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'mypro',
            'HOST':'127.0.0.1',
            'PORT':'3306',
            'USER':'root',
            'PASSWORD':'123456'
        }
    }
    需要提前登陆数据库创建 mypro 库
    
    2.改用mysql 数据库,需要安装mysql-python
    下载一个MySQL-python-1.2.3.win-amd64-py2.7.exe文件进行安装
    官网地址:https://pypi.python.org/pypi/MySQL-python/
    3.打开windwos cmd 执行
    
    pip install MYSQL-python==1.2.5
    pip install pymysql
    
    4. 打开 __init__.py 添加内容:
    import pymysql
    pymysql.version_info = (1, 4, 13, "final", 0)
    pymysql.install_as_MySQLdb()
    
    5.windows 执行 python manage.py migrate (因为之前已有模型)
    6.启动项目,没有报错
    7.修改 student/urls.py,增加内容
        url(r'login/$',views.login_views)
    8.新增加 student/views.py
    def login_views(request):
        if request.method == 'GET':
            return render(request,'login.html')
        else:
            #1. 获取请求参数
            uname = request.POST.get('uname')
            pwd = request.POST.get('pwd')
            #2.查询数据库
            if uname and pwd:
                c = Student.objects.filter(sname=uname,spwd=pwd).count()
                if c == 1:
                    return HttpResponse('登陆成功')
            #判断是否登陆成功
            return HttpResponse('登陆失败')
    访问:
    http://127.0.0.1:8000/student/login/
    
    

  • 相关阅读:
    面向对象
    6.jQuery基础_试题
    5.JavaScript操作BOM、DOM对象_试题
    css疑问
    JAVA学习笔记_五JAVA开发中的WEB前端技术
    java学习笔记_mysql随堂考试_错题
    java学习笔记④MySql数据库--03/04 DQL查询
    java学习笔记④MySql数据库--01/02 database table 数据的增删改
    java学习笔记③JAVA核心API编程-01集合框架和泛型
    java学习笔记②JAVA面向对象
  • 原文地址:https://www.cnblogs.com/lixinliang/p/14066694.html
Copyright © 2020-2023  润新知