内容回顾

  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. BUUCTF-snake

    snake 这是我最想吐槽的一个题目,搞这个蛇在这里.我看的这个图就头皮发麻. 最不愿意做的题,建议以后出题能不能搞个正常的啊. 16进制打开发现压缩包,binwalk提取,得到三个文件 key中是b ...

  2. 重学ES系列之过滤数组

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. RPA应用场景-账套建立

    所涉人工数量5操作频率 不定时 场景流程 1.客户按照项目开设专项财务管理,每个项目需要在初期建立自己的账套: 2.运营专员通过邮件发送账套建立申请: 3.根据申请进入金蝶运维后台,依据规则完成账套建 ...

  4. windows平台编译CEF支持H264(MP3、MP4)超详细

    编译目标(如何确定目标定版本请查看:BranchesAndBuilding) CEF Branch:4664 CEF Commit:fe551e4 Chromium Version:96.0.4664 ...

  5. 入门Python数据分析最好的实战项目(一)分析篇

    数据初探 首先导入要使用的科学计算包numpy,pandas,可视化matplotlib,seaborn,以及机器学习包sklearn. python学习交流群:660193417### import ...

  6. 基于Vue3SSR渲染作品H5页

    回顾 多项目之间的关系 业务组件sqxy-components为何要单独抽离出来? 整体思路 根据 id uuid来获取思路 判断 status(未发布,强制下线) 作品数据+leogo-cpmpon ...

  7. python虚拟环境(python+conda)

    python的不同虚拟环境就相当于在电脑上装了很多个python.下面写python创建虚拟环境.conda创建虚拟环境和在pycharm中配置一下. python -m venv (要创虚拟环境的路 ...

  8. YII服务定位器依赖注入

    <?php /** * Created by PhpStorm. * Date: 2016/5/25 * Time: 18:33 * 服务定位器依赖注入 */ namespace fronten ...

  9. python闭包函数及装饰器简介

    目录: 闭包函数简介 闭包函数的实际应用 装饰器简介 装饰器初期-完整版 装饰器语法糖 闭包函数简介 1.定义在函数内部的函数(函数的嵌套) 2.内部函数运用外部函数局部名称空间中的变量名 注:函数名 ...

  10. 使用Python3.7+Tornado5.1集成新浪微博三方登录(无需企业资质)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_137 新浪微博:山寨版的twitter,各种粉丝的集散地,天朝人民的最爱,基本上网民都人手一个微博账号,所以使用新浪微博账号进行三 ...