Django模拟简单的登录功能以及如何使用pycharm连接数据库和ORM的使用

1、登录功能,连接MySQL

1、1 路由
    url(r'^login', views2.login),
    url(r'^index', views2.index),
    url(r'^test', views.test),
1、2 视图函数
def index(request):
    return render(request, 'index.html')


def login(request):
    if request.method == 'GET':
        return render(request, 'login.html')
    else:
        name = request.POST.get('name')
        password = request.POST.get('password')
        
        conn = pymysql.connet(
        	post = '127.0.0.1',
            user = 'root',
            password = '1',
            db = 'userinfo',
            post = 3306,
        )
        cursor = conn.cursor(cursor=pymysql.cursor.DictCursor)
        row = cursor.execute('select * from user where name=%s and password=%s',(name, password))
        res = cursor.fetchone()
        if res:
            return render('/index')
        else:
            return HttpResponse('用户名或密码错误')     
1、3 模板文件login
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css">
    <title>Title</title>
</head>
<body>

<div class="row">
    <div class="col-md-6 col-md-offset-3">
        <h1 class="text-center">登录功能</h1>
        <form action="" method="post">
            <div class="form-group">
                <label for="">用户名:</label>
                <input type="text" name="name" class="form-control">
            </div>


            <div class="form-group">
                <label for="">密码:</label>
                <input type="password" name="password" class="form-control">
            </div>

            <div class="text-center">

                <input type="submit" value="登录" class="btn btn-success">
            </div>

        </form>
    </div>

</div>

</body>
</html>
1、5 模板文件index
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css">
    <script src="/static/js/jquery.min.js"></script>
    <title>首页</title>
</head>
<body>

    <nav class="navbar navbar-inverse navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">导航</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Project name</a>
        </div>
        <div id="navbar" class="navbar-collapse collapse">
          <form class="navbar-form navbar-right">
            <div class="form-group">
              <input type="text" placeholder="Email" class="form-control">
            </div>
            <div class="form-group">
              <input type="password" placeholder="Password" class="form-control">
            </div>
            <button type="submit" class="btn btn-success">Sign in</button>
          </form>
        </div><!--/.navbar-collapse -->
      </div>
    </nav>

    <!-- Main jumbotron for a primary marketing message or call to action -->
    <div class="jumbotron">
      <div class="container">
        <h1>小老虎</h1>
        <p>同城交友</p>
        <p><a class="btn btn-primary btn-lg" href="#" role="button">疯狂点击我</a></p>
      </div>
    </div>

    <div class="container">
      <!-- Example row of columns -->
      <div class="row">
        <div class="col-md-4">
          <h2>Heading</h2>
          <p>Donec</p>
          <p><a class="btn btn-default" href="#" role="button">View details »</a></p>
        </div>
        <div class="col-md-4">
          <h2>Heading</h2>
          <p>Donec </p>
          <p><a class="btn btn-default" href="#" role="button">View details »</a></p>
       </div>
        <div class="col-md-4">
          <h2>Heading</h2>
          <p>Donec .</p>
          <p><a class="btn btn-default" href="#" role="button">View details »</a></p>
        </div>
      </div>

      <hr>

      <footer>
        <p>© 2020 Company, Inc.</p>
      </footer>
    </div> <!-- /container -->

</body>
</html>

2、MTV和MVC

1 django 是MTV架构,本质也是mvc
	-M:model,数据库相关操作
    -T:template,模板文件(就是mvc的v层)
    -V:view,视图(urls+view=MVC的控制器)
2 MVC架构:主流的web框架都是mvc
	-Web应用分为模型(M),控制器(C)和视图(V)
    -M:model,数据库相关操作
    -C:controler控制器,逻辑相关,逻辑代码
    -V:视图,模板文件

在这里插入图片描述

在这里插入图片描述

3、Django的生命请求周期

0 近几年python中的几个web框架,sanic,fastapi(异步框架)

1 python中的web服务器都符合wsgi协议

2 web服务器,任何语言都会有一个web服务器,负责把http请求转成这门语言的变量
	-python:wsgiref(性能很低),uwsgi(C语言写的),200多并发量
    -java:tomcat,jboss(300多并发了)
    -php:php服务器
    

在这里插入图片描述

3、虚拟环境配置

1 虚拟环境作用:隔离项目,每个项目有自己依赖的模块和包,不同模块和包的版本就不会相
			  互影响
2 pycharm中配置虚拟环境

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5、ORM概述

1 orm:对象关系映射(跟语言无关)
    	数据库中的表     ----》对应程序的一个类
        数据库中的一行数据----》对应程序中的一个对象
2 python中常见orm框架
	-django的orm框架
    -sqlachemy orm框架
    
3 java:(扩展),java中写web项目
	ssh框架 :spring+struts(有漏洞)+hibernate(orm框架)
	ssm框架:spring+springmvc+mybatis(orm框架,可以写原生sql)
    springboot:sb框架 ,tomcat内置进去了
    springcloud:微服务
4 orm能干的事
	-创建表(不能创建数据库,手动创建数据库)
    -增加删除表内字段
    -增删查改数据

6、Django中orm的使用

0 sqlite:也是一个数据库,文件数据库,一个库就是一个文件,不需要单独安装
	-现在在用,也要用到关系型数据库,不想装mysql,就可以使用sqlite
    -移动开发本地存储数据,存在sqlite中

1 创建个UserInfo表,在models中写一个类
2 表中有字段(类属性),字段有属性,


# 第一步在models中写要给类
class UserInfo(models.Model):
    # 字段属性--》后面那个对象决定的,
    # 改字段自增,并且是主键
    id = models.AutoField(primary_key=True)
    # 改字段是varchar类型,长度为32(可以设置唯一约束,是否是索引,默认值是,是否可以为空)
    name = models.CharField(max_length=32)
    # 密码字段
    password =models.CharField(max_length=64,null=True)
    # 数字类型
    gender=models.IntegerField(default=0)
    # 省份
    province=models.CharField(max_length=32,null=True)
    
    
# 第二步,把表创建出来(执行两个命令)
	-python3 manage.py makemigrations  
    # 这条命令会在migrations创建一条记录,数据库变更记录
    
    -python3 manage.py migrate         
    # 把更改同步到数据库
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值