Django连接mysql,sqlite

回顾

1 django的目录介绍
-urls.py   路由和视图函数的映射关系
-views.py  视图函数
-models.py 数据库相关操作
-settings.py 配置文件
2 app
-项目中独立的功能,通常做成一个app
-python3 manage.py startapp app的名字
3 django项目的启动方式
-命令行:python3 manage.py runserver 0.0.0.0:8080
-pycharm中启动,点绿色箭头
4 配置文件
-是否是调试模式:开发阶段都是true,上线是false
-注册app
-中间件
-数据库链接配置
-静态文件
5 静态文件
-1 羡慕根路径先创建目录(static)
-2 在setting.py中配置
	STATIC_URL = '/static/'
    STATICFILES_DIRS=[
        os.path.join(BASE_DIR,'static'),
    ]
-3 static文件夹中创建目录
	-js
    -css
    -img
    -其他第三方模块
-4 模板文件中使用(本质原理一会讲)
	-/static/js/jquery.min.js
6 路由配置
-url(r'^login', views2.login),
7 视图
-请求对象
	-request.method---->get  post
    -request.GET   当作字典来用
    -request.POST  post形式传递的参数
    -考你:post请求可不可以在请求地址中携带数据?可以的
-响应对象
	-HttpResponse                              返回字符串(其它返回走的都是它)
    -render(request,'模板名字')                  返回模板
    -redirect('/index或者http://www.baidu.com')   返回重定向   

8 登录小案例

在Django中连接mysql

django连接mysql

1 如果项目使用sqlite,不需要额外配置,直接操作即可
2 django默认情况链接mysql,用的驱动是mysqldb模块,python 3.x以后,这个模块用不了了,咱们用的全都是pymysql,需要做个替换

3 showmigrations:查看哪些记录更改了,但是没有同步到数据库中

3 如果使用mysql,需要配置如下:
在这里插入图片描述

-1 配置文件中配置:settings.py
	DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'day62',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD':'123'
        }
    }
-2 需要在 app的__init__.py 中写
    import pymysql
	pymysql.install_as_MySQLdb()
	![在这里插入图片描述](https://img-blog.csdnimg.cn/20200930171156383.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80OTU3MzQ5OA==,size_16,color_FFFFFF,t_70#pic_center)

    
-3 后续操作完全一样,在models中建立类,写字段
-4 视图函数中插入,查询
-5 pycharm的--》tools---》run manage.py Task

1 登录功能,连接mysql

路由

url(r'^login', views2.login),
    url(r'^index', views2.index),
    url(r'^test', views.test),

视图函数

def index(request):
    return render(request, 'index2.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.connect(host='127.0.0.1', user='root', password='123', database='userinfo', port=3306, )
        # 拿到一个游标
        cursor = conn.cursor()
        # 执行sql
        cursor.execute('select * from user where name=%s and password=%s ', (name, password))
        # 获取结果
        ret = cursor.fetchone()
        print(ret)
        if ret:
            return redirect('/index')
        else:
            return HttpResponse('用户名或密码错误')

模板文件login.html

<!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>

模板文件index2.html

<!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 id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </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 id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </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 sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
          <p><a class="btn btn-default" href="#" role="button">View details »</a></p>
        </div>
      </div>

      <hr>

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

</body>
</html>

2 MTV与MVC

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

1 MTV和MVC
-MVC:model数据库相关操作,V:view视图,C:controler控制器,逻辑
-MTV:model数据库相关操作  T:template V:视图函数+路由匹配

3 django请求生命周期

在这里插入图片描述

django请求生命周期
####-web服务器--》http拆成字典---》调起可调用对象(django,flask,tornodo)---》路####	由匹配--》执行视图函数(数据库拿数据,模板文件拿模板,渲染)--》生成html页面--》####返回

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

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

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

4 虚拟环境讲解,pycharm配置

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能干的事
-创建表(不能创建数据库,手动创建数据库)
-增加删除表内字段
-增删查改数据

django orm简单使用
-不能创建数据库,手动创建数据库(sqlite不需要)
-django默认支持sqlite(不需要额外配置)
-models中写一个类(继承models.Model)
-写字段,注释掉字段,新增字段(default=默认值 或者 null=True)

orm介绍
-对象关系映射:
	-数据中的一个表对应程序中一个类
    -一条数据对应程序中一个对象
-django orm,sqlachemy

-两条数据库迁移命令(一个是记录,一个是真正的迁移)
	python manage.py makemigrations
    python manage.py migrate

在这里插入图片描述

5 orm创建表操作

-两条数据库迁移命令(一个是记录,一个是真正的迁移)
python manage.py makemigrations
python manage.py migrate

-插入
	user=UserInfo(name=lqz,age=19)
    user.save()
    
    user=UserInfo.objects.create(name=lqz,age=19)
-查询所有
    UserInfo.objects.all()  # 放到列表中[user1,user2,user3]

第一步 在models里面写一个类
在这里插入图片描述
第二步 在pycharm的Terminal里输入命令(输入下面两条命令才能将数据同步到数据库,同时也会生成插入数据的记录
-python3 manage.py makemigrations # 这条命令会在migrations创建一条记录,数据库变更记录
-python3 manage.py migrate # 把更改同步到数据库
在这里插入图片描述

6.orm的增加删除字段

在这里插入图片描述

7 mycharm连接sqlite数据库

1.第一种 可以直接从pycharm中直接拖入Navicat里面
在这里插入图片描述

第二种 拷贝db.sqlite的路径,然后在navucat的里面输入路径,查找文件,点击打开就连接成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值