zoukankan      html  css  js  c++  java
  • 13 Jun 18 Django

    13 Jun 18

    一、内容回顾

    1. 基础必会三件套

        from django.shortcuts import HttpResponse, render, redirect

        - HttpResponse("响应体内容")

        - render(request, "login.html",{“k”: "v"})   --> 打开一个文件,把文件的内容读取出来,(并做字符串替换)

        - redirect("具体的网址")             --> 回复一个让浏览器请求我指定网址的响应

        

    2. form表单提交数据,注意事项:

        1. 是form不是from,必须设置action和method这两个属性 # 如果action不写,默认向当前路径提交

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

        3. 必须要有submit按钮

        

    3. Django如何获取form表单post过来的数据

        1. request.POST     --> 所有数据的大字典

          request.POST.get("pwd")

           

    2. request.method   --> 得到的是请求的方法(大写的)- GET/POST

     

    # 补充: request.GET   -->从URL中取参数;即使method为POST,依旧可以使用request.GET

     

    4. GET和POST

        1. 什么时候用GET?

            1. 获取一个网页的时候

            2. 搜索引擎检索    /web?query=新垣结衣

            

        2. 什么时候用POST?

            向服务端提交数据 (form表单提交数据)

     

    5. Django中的APP概念

        1. 创建APP命令

            python3 manage.py startapp app名字

            

        2. 告诉Django你新建的app叫啥

            settings.py里面,INSTALLED_APPS这个配置项里面加上你的app

            

    6. ORM

        1. ORM概念和优劣势

        

        2. ORM的本质

            对象  关系   映射

            类    <-->  数据表

            对象  <-->  数据行

            属性  <-->  字段

     

        3. Django中ORM的使用

            1. 手动新建一个数据库  # Django不能操作建立数据库

            

            2. 告诉Django连接哪个数据库

                settings.py里面配置数据库连接信息:

                # 数据库相关的配置项

                DATABASES = {

                    'default': {

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

    # 告诉Django使用MySQL的那套代码

                        'NAME': 'day63',  # 数据库的名字

                        'HOST': '127.0.0.1',  # 主机

                        'PORT': 3306,  # 端口

                        'USER': 'root',  # 用户名

                       'PASSWORD': '123'  # 密码

                    }

                }

                

            3. 告诉Django用pymysql模块代替默认的MySQLdb去连接MySQL

                在和settings.py同目录下的__init__.py文件中做配置

                import pymysql

               pymysql.install_as_MySQLdb()

     

             4. 在app下面的models.py文件中 定义 类

                必须要继承models.Model

                class Publisher(models.Model):

                    id = models.AutoField(primary_key=True)  # 自增的主键

                    name = models.CharField(max_length=64)  # varchar(64)

                    

            5. 两条命令

                1. python3 manage.py makemigrations   # 把models.py里面的改动登记到小本本上

                2. python3 manage.py migrate         # 将登记的改动翻译成SQL语句,到数据库中执行

                         

    7. 新建Django项目的步骤:

           1. 创建项目(APP)

           2. 创建数据库和配置数据库

           3. 配置templates和静态文件相关

           4. 注释掉settings.py中csrf那一行

     

    8. Django项目真正的业务逻辑

    输入127.0.0.1:8000/publisher_list/  --> 返回一个页面,页面上将数据库中所有的出版社要展示出来

     

     

    二、今日内容

    1. 出版社的删除

        key:怎么知道用户点击删除的时候删除的是哪一条记录

             - id用来在数据库中唯一确定一条记录

        127.0.0.1:8000/delete_publisher/?id=2

     

    2. 出版社的编辑

        key:设计URL

       127.0.0.1:8000/edit_publisher/?id=2

     

    3. 书籍的增删改查

        ORM中的外键关联

        publisher = models.ForeignKey(to=Publisher)  # 外键关联Publisher这张表

     

        book_obj.publisher     --> 和我这本书关联的出版社对象

        book_obj.publisher_id  --> 和我这本书关联的出版社的id值,也就是数据库中真正存的字段值

     

        1. 查和增

     

    4.  {{ forloop.counter }}  # 从1开始依次累加

       {{ forloop.counter0 }}  # 从0开始依次累加

     

    5. 设置不显示

       style: display:none

       bootstrap: hide

     

    6. 类与类之间一般空两行

  • 相关阅读:
    数据库-数据约束
    数据库-表2
    数据库-表
    MySQL入门
    记一次stm8l程序跑飞
    nRF24L01P的ShockBurst与Enhance ShockBurst
    电路板工艺中的NPTH和PTH
    nRF24L01P数据传输速率
    STM32F030-UART1_DMA使用提示
    Altium Designer 复制报错-奇怪的问题解决办法
  • 原文地址:https://www.cnblogs.com/zhangyaqian/p/py20180613.html
Copyright © 2011-2022 走看看