内容回顾

  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

    1. def login(request):
      #业务逻辑

      return 响应

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

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

    models.py

    1. 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的操作

    1. 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

    新增:

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

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

    删除:

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

    编辑:

    1. 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.模板的语法

    1. 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相关命令

      • 下载安装

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

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

        切换到项目的根路径

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

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

        1. python manage.py makemigrations #检测app下的model.py的变化 记录下变更记录
        2. 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

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

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

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

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

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

        1. from django.conf.urls import url
        2. from django.contrib import admin
        3. from app01 import views
        4.  
        5. urlpatterns = [
        6. url(r'^admin/', admin.site.urls),
        7. url(r'^publisher_list/', views.publisher_list),
        8. url(r'^publisher_add/', views.publisher_add),
        9. url(r'^publisher_del/', views.publisher_del),
        10. url(r'^publisher_edit/', views.publisher_edit),
        11. ]
      4. 函数

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

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

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

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

      6. ORM

        对象关系映射

        对应关系

        类-->> 表

        对象-->> 数据行

        属性-->>字段

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

django_day01的更多相关文章

  1. day18_雷神_django第一天

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

随机推荐

  1. RPA应用场景-对公账户开户资质审查

    场景概述 对公账户开户资质审查 所涉系统名称 人民银行账户管理系统 人工操作(时间/次) 0.5小时 所涉人工数量 132 操作频率 不定时 场景流程 1.机器人自动登录人民银行账户管理系统 2.查询 ...

  2. Linux命令格式、终端类型和获取帮助的方法

    Linux用户类型 Root用户:超级管理员,权限很大 普通用户:权限有限 终端 terminal 终端类型 物理终端:鼠标.键盘.显示器 虚拟终端:软件模拟出来的终端 控制台终端: /dev/con ...

  3. windows脚本bat做文件备份

    @ECHO OFF echo 切换到当前目录... cd /d %~dp0% echo 开始复制Code1... echo d | XCOPY Code1 ..\备份\bakdir\Code1 /s ...

  4. NC212914 牛牛与后缀表达式

    NC212914 牛牛与后缀表达式 题目 题目描述 给定牛牛一个后缀表达式 \(s\) ,计算它的结果,例如,1+1对应的后缀表达式为1#1#+,'#'作为操作数的结束符号. 其中,表达式中只含有'+ ...

  5. NC23036 华华听月月唱歌

    NC23036 华华听月月唱歌 题目 题目描述 月月唱歌超级好听的说!华华听说月月在某个网站发布了自己唱的歌曲,于是把完整的歌曲下载到了U盘里.然而华华不小心把U盘摔了一下,里面的文件摔碎了.月月的歌 ...

  6. Host–Parasite(主从关系): Graph LSTM-in-LSTM for Group Activity Recognition

    This article aims to tackle the problem of group activity recognition in the multiple-person scene. ...

  7. Math类和函数定义

    Math这个类是java系统内部当中的一个类,他用来提供一些基本的数学操作,他也有些工具可以给我们用比如 :abs--算绝对值   pow--算幂次   random--随机数   round--四舍 ...

  8. Kafka Topic Partition Offset 这一长串都是啥?

    摘要:Offset 偏移量,是针对于单个partition存在的概念. 本文分享自华为云社区<Kafka Topic Partition Offset 这一长串都是啥?>,作者: gent ...

  9. input函数的高级使用

    经典的a+b问题终于重出江湖了 a=input('a = ') b=input('b = ') print(a+b)//error,因为此时ab是字符串类型,其加号起到的是连接的作用 所以这就是类型转 ...

  10. Windows快捷安装应用方法(此处以Virtualbox为例)

    1.执行已下载的virtualbox的安装exe文件,使用pywinauto模拟点击Windows安装的对应控件 1.1.启动exe文件 start *.exe 1.2.使用pywinauto(也适用 ...