• Django中的ORM 和入门基础


    day62  2018-06-12

    1. 内容回顾

    1. web框架的本质

    1. socket

    浏览器: socket客户端

    服务器: socket服务端

    2. HTTP协议:规定了一个收发消息的格式

    3. 消息分类

    请求(request):浏览器向服务端发送的消息

    GET /index/ HTTP/1.1

    k1:v1

    ...

    请求体

    响应(response):

    HTTP/1.1 200 OK

    k1:v1

    ...

    响应体             --> 浏览器显示的那部分内容 

    2. Python Web框架分类

    功能分类:

    a: 收发消息相关(socket)

    b: 根据不用的URL执行不同的函数(业务逻辑相关的)

    c: 实现动态网页(字符串的替换)

    Web框架分类:

    1. 自己实现b,c,使用第三方的a                    --> Django

    2. 自己实现b,使用第三方的a和c                    --> Flask

    3. 自己实现ac                                 --> Tornado

    Django是一个大而全的web框架。

    3. 两个模块

    web服务器程序   <--WSGI协议-->  web应用程序

    1. wsgiref

    Django开发环境使用的就是wsgiref模块

    2. jinja2(Flask)

    渲染HTML页面,其实就是实现字符串的替换。

    4. Django

    1. Django安装

    2. 新建Django项目并启动

    3. 三件套

    4. templates的配置

    5. 静态文件的配置

    2. 今日内容

    1. 登录功能的实现

    1. form表单提交数据的注意事项:

    1. 是form不是from,必须要有method和action

    2. 所有获取用户输入的表单标签要放在form表单里面,表单标签必须要有name属性

    3. form表单必须要有submit按钮

    2. GET和POST

    什么时候用GET:

    向服务端请求一个网页的时候

    搜索引擎检索时

    什么时候用POST:

    使用表单向服务器提交数据时

    3. request.method  --> 获取的是你请求的方法(GET/POST...)必须是大写!!!

    4. request.POST    --> 获取POST提交过来的全部数据(字典)

    5. redirect        --> 跳转到指定页面!!!

    基础必会三件套:

    1. HttpResponse("OK")

    2. render(request, "login.html")

    3. redirect("URL")

    6. app  

    project   (学校)

    - app   (学院)

    创建APP:

    python3 manage.py startapp app01

     

    创建好APP,记得告诉Django, 我有这个app

    在settings.py中,

    # 安装的app都有哪一些

    INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'app01',

    # 'app01.apps.App01Config',

    ]

    Django中的数据库

    2. ORM(对象关系映射)

    1. pymysql

    import pymysql

    conn = pymysql.connect(

    host="127.0.0.1",

    port=3306,

    user="root",

    password="123",

    database="day62",

    charset="utf8"

    )

    cursor = conn.cursor()

    cursor.execute("slect * from user;")

    ret = cursor.fetchall()

    2. 我们写原生css和用jQuery

    document.getElementById(id)

    $("#id")

    数据表                       类

    数据行                       实例对象

    字段                         属性

    代码操作数据库的方式;

    直接执行SQL

    优点:执行效率高

    缺点:开发效率低

    按照特定的语法写,翻译成SQL语句再去执行

    优点:开发效率高

    缺点:执行效率低,你会忘记SQL语句

    ORM:

    sqlAlchemy  Flask里面也有一个orm就是sqlAlchemy

    ORM和原生的SQL语句,根据具体的应用场景自行取舍。

    Django项目使用MySQL数据库

    1. 在Django项目的settings.py文件中,配置数据库连接信息:

    Django里面的ORM的使用:

    1. 告诉Django连接那个数据库

    DATABASES = {

    'default': {

    'ENGINE': 'django.db.backends.mysql',

    'NAME': 'day62',

    'HOST': '127.0.0.1',

    'PORT': 3306,

    'USER': 'root',

    'PASSWORD': '123',

    }

    }

    2. 告诉Django怎么连接

    Django默认使用的是 MySQLdb模块 连接数据库

    告诉Django用pymysql这个模块去连接MySQL

    在settings.py同目录下的__init__.py文件中,指定使用pymysql模块代替MySQLdb

    import pymysql

    pymysql.install_as_MySQLdb()

    3. 在app/models.py文件中定义类

    一定要继承models.Model

    4. 执行创建表的操作

    1. python3 manage.py makemigrations    --> 将models.py的修改登记到小本本上

    2. python3 manage.py migrate           --> 将修改翻译成SQL语句,去数据库执行

    重点来了!!!!为了让我们好区分  做了一个顺序区分

           先创建一个django项目

    3. 图书管理系统

    1. 表结构设计

    1. 出版社

    2. 书

    3. 作者

     

  • 相关阅读:
    iis7无法写入配置文件
    重写基类方法与隐藏基类方法的区别
    观察者模式上班玩游戏,老总是怎么知道的?
    Session过期和清除缓存 .
    C#基础概念
    php反序列化漏洞绕过魔术方法 __wakeup
    Shadow broker=>fuzzbunch+metasploit 攻击外网测试以及metasploit大批量扫描目标IP
    Python “ValueError: incomplete format” upon print(“stuff %” % “thingy”) 解决方法
    CSTC2017Webwriteup
    php 弱类型总结
  • 原文地址:https://www.cnblogs.com/maojiang/p/9174591.html
Copyright © 2020-2023  润新知