内容回顾

  1. django处理浏览器的请求流程:

    1. 请求发送到wsgi wsgi封装了请求的相关数据(request)

    2. django去匹配路径 根据路径判断要执行哪个函数

    3. 执行函数 函数执行具体的业务逻辑

    4. 函数返回响应 djgango返回 按照HTTP协议响应的格式进行返回

  2. 发请求的途径

    1. 在浏览器地址栏输入地址 回车 发出get请求

    2. a标签 发出get请求

    3. form表单 发出post请求

  3. get和post区别

    get 获取一个资源

    ?k1=v1&k2=v2 request.GET

    get请求没有请求体

post 提交数据

request.POST

数据在请求体中

  1. views.py

    def login(request):
    #业务逻辑

    return 响应

    HttpResponse('字符串') #返回一个字符串
    render(request,'模板的文件名',{'k1':v1...})
    redirect('地址')#重定向

    request.method   #请求方式 GET POST
  2. ORM

    models.py

    class Publisher(models.Model):
    name = models.CharField(max_lenth=32) #varchar(32)
       
    class Book(models.Model):
    name = models.CharField(max_lenth=32) #varchar(32)
       pub = modelsForeignKey(Publisher,on_delete=models.CASCADE)#一对多的对应关系 外键写在多的一个表中 表示和Publisher这个表又关系 第二个参数表示如果Publisher这个表中参数被删除 Book这个表中的数据也都被删除(默认的)
       """
      on_delete 2.0版本后是必须填的
      models.CASCADE 级联删除
      models.PROTECT 保护
      models.SET(v) 删除后设置为默认值
      models.SETDEFAULT 删除后设置为默认值
      models.SET_NULL 删除后设置为Null
      models.DOTHING 什么都不做
       
      """
       

    orm的操作

    from app01 import models
    models.Publisher.objects.all() # 获取所有的数据 QuerySet 对象列表
    models.Publisher.objects.get(name='xxx',id='1') #获取一条存在且唯一的数据 对象
    models.Publisher.objects.filter(name='xxx',id='1') #获取多条的数据 对象列表




    ret = models.Book.objects.all()#对象列表
    for book in ret:
    print(book)
    print(book.id,book.pk)
    print(book.name)
    print(boon.pub)  #书籍所关联的出版社的对象
    print(boon.pub_id)  #书籍所关联的出版社的id

    新增:

    models.Publisher.objects.create(name='xxx') #新增的对象

    models.Book.object.create(name='xxx',pub=出版社的对象) #新增的对象
    models.Book.object.create(name='xxx',pub=出版社的id) #新增的对象

    删除:

    models.Publisher.objects.get(pk=1).delete()
    models.Publisher.objects.filter(pk=1).delete() #删除对象列表 批量删除

    编辑:

    book_obj.name = 'xxx'
    book_obj.pub = 出版社对象
    book_obj.pub_id = 出版社的id
    book_obj.save() #保存到数据库


    models.Book.objects.filter(pk=1).update(name='xx',pub_id=出版社的id) #批量更新

    6.模板的语法

    return render(request,'模板的名称',{'k1':v1,'k2':v2...})

    {{ k1 }}   {{ k2 }}

    for

    {% for i in k1%}

    {{ forloop.counter }}
    {{ i }}

    {% endfor %}

    if
    {% if 条件 %}
    xxx
    {%   endif     %}


    {% if 条件1 %}
    xxx
    {% elif 条件2   %}
        xxx
    {% else %}
    xxx
    {%   endif     %}

    django基础回顾

    1. django相关命令

      • 下载安装

        pip install dajango==版本号 -i 国内源
      • 创建django项目

        django-admin startproject 项目名称	
      • 启动项目

        切换到项目的根路径

        python manage.py runserver 127.0.0.1:8080
        python manage.py runserver 80 127.0.0.1:80#改端口。
        python manage.py runserver 0.0.0.0:80 0.0.0.0:80#改地址。
      • 创建app

        python manage.py startapp app的名称
      • 数据库迁移的命令

        python manage.py makemigrations  #检测app下的model.py的变化  记录下变更记录
        python manage.py migrate #迁移 将变更记录同步到数据库中
      1. settings 配置

        BASE_DIR 项目的根目录

        INSTALLED APPS 注册的app

        MIDDLEWARE 中间件

        注释掉csrf的中间件 可以POST请求

        TEMPLATES 模板

        DIRS: [os.path.join(BASE_DIR,'templates')]

        DATABASES 数据库

        静态文件

        STATIC_URL = '/static/' #静态文件的别名

        STATICFILES_DIRS=[

        os.path.join(BASE_DIR,'static')

        ]

      2. django使用mysql数据库的流程

        1. 创建数据库

        2. 配置配置settings

          DATABASES = {
          'default': {
          'ENGINE': 'django.db.backends.mysql',
          'NAME': 'bookmanager',#数据库名称
          'HOST':'127.0.0.1',
          'PORT':3306,
          'USER':'root',
          'PASSWORD':'admin',
          }
          }
        3. 使用pymysql模块连接mysql数据库

          写在与项目同名的文件夹的__init__.py中:

          import pymysql
          pymysql.install_as_MySQLdb()
        4. 在app下的models.py中写入model(Model):

          from django import models
          class User(models.Model):# 表名 app的名称_user
          username = models.CharField(max_length=32)#varchar(32)
        5. 执行数据库命令

          python manage.py makemigrations  #检测app下的model.py的变化  记录下变更记录
          python manage.py migrate #迁移 将变更记录同步到数据库中
      3. urls.py路径和函数对应关系

        from django.conf.urls import url
        from django.contrib import admin
        from app01 import views urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^publisher_list/', views.publisher_list),
        url(r'^publisher_add/', views.publisher_add),
        url(r'^publisher_del/', views.publisher_del),
        url(r'^publisher_edit/', views.publisher_edit),
        ]
      4. 函数

        from django.shortcuts import render,redirect,HttpResponse
        def xxx(request):
        request.method 请求方式 GET POST
        request.GET #url上携带的参数 ?k1=v1&k2=v2 {} 推荐写法request.GET.get('k1')
        request.POST #post请求提交数据 {} #处理业务逻辑 #返回响应
        return 响应
        #HttpResponse('字符串')
        #render(request,'模板的文件名',{}) 返回一个HTML页面
        #redirect('地址') 重定向
      5. form表单

        1. form标签的属性 action地址 method=’post'

        2. input标签要有name属性 有些标签要有value

        3. 要有一个button按钮 或者 type='submit'的input

      6. ORM

        对象关系映射

        对应关系

        类-->> 表

        对象-->> 数据行

        属性-->>字段

        from django import models
        class User(models.Model):# 表名 app的名称_user
        username = models.CharField(max_length=32)#varchar(32)

django_day01的更多相关文章

  1. day18_雷神_django第一天

    # django_day01 1.http 协议 超文本传输协议,HTTP有很多应用,但最著名的是用于web浏览器和web服务器之间的双工通信. 协议概述 HTTP是一个客户端终端(用户)和服务器端( ...

随机推荐

  1. 2 Elment Ui 日期选择器 格式化问题

    Elment Ui 日期选择器 格式化问题 在前后端联调过程中 我们常常会遇到日期无法被反序列化 这个问题 会有点头疼 下面以我这边为例 后端使用的是springboot 默认集成了jackjson ...

  2. python基础知识-day9(数据驱动)

    1.数据驱动的概念 在自动化测试中,需要把测试的数据分离到JSON,YAML等文件中. 2.YAML 的相关知识 YAML 入门教程 分类 编程技术 YAML 是 "YAML Ain't a ...

  3. 关于nginx 和 uwsgi

    关于nginx和uWSGI和Django之间的关系,我觉得要理一下. 原文链接 为什么要用nginx 因为我们要使用https协议访问.(y总说django不支持,但是我查了一下,django也可以支 ...

  4. 用python随随便便做一个二维码叭~~~

    Python是目前最好的编程语言之一.由于其可读性和对初学者的友好性,已被广泛使用. 那么要想学会并掌握Python,可以实战的练习项目是必不可少的. 接下来,我将给大家介绍非常实用的Python项目 ...

  5. Kafka KRaft模式探索

    1.概述 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据.其核心组件包含Producer.Broker.Consumer,以及依赖的Zookeeper集群. ...

  6. 【Azure Developer】记录一次使用Java Azure Key Vault Secret示例代码生成的Jar包,单独运行出现 no main manifest attribute, in target/demo-1.0-SNAPSHOT.jar 错误消息

    问题描述 创建一个Java Console程序,用于使用Azure Key Vault Secret.在VS Code中能正常Debug,但是通过mvn clean package打包为jar文件后, ...

  7. JSON: JavaScript Object Notation

    JSON是JavaScript Object Notation 的缩写,是JS提供的一种数据交换格式.1) JSON对象本质上就是一个JS对象,但是这个对象比较特殊,它可以直接转换为字符串,在不同语言 ...

  8. NAT模式 LVS负载均衡群集部署

    NAT模式 LVS负载均衡群集部署的操作步骤 实验环境准备: 负载调度器:内网关 ens33:172.16.10.1,外网关 ens37:12.0.0.1 Web节点服务器1:172.16.10.10 ...

  9. Mybatis源码解读-SpringBoot中配置加载和Mapper的生成

    本文mybatis-spring-boot探讨在springboot工程中mybatis相关对象的注册与加载. 建议先了解mybatis在spring中的使用和springboot自动装载机制,再看此 ...

  10. Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单。

    前方: 开源地址:https://github.com/cyq1162/Taurus.MVC 上篇文章介绍过:工业制造行业的低代码开发平台思维架构图 规划中涉及到了微服务,近些天经过努力和不断的代码与 ...