zoukankan      html  css  js  c++  java
  • django_day01

    内容回顾

    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)

           

       

       

       

       

       

  • 相关阅读:
    php函数名后冒号(:)+数据类型(返回值类型限制/php新特性)
    qBittorrent 任务数
    TDDFT软件 octopus 编译
    visual studio code, latex workshop, setting.json
    Tex插入图片/插入tikz流程图
    记录一下讨厌的东西,就当黑名单了
    安装mingw-w64
    win7 和 win10窗口的小区别
    lattice, reciprocal lattice, OUTCAR
    v_sim 个人用户编译 无root权限
  • 原文地址:https://www.cnblogs.com/DemoLi/p/12688225.html
Copyright © 2011-2022 走看看