当前位置: 首页 > news >正文

MTV框架和django基本命令

框架

MVC和MTV框架
1. MVC
    M: model          模型      对数据库进行操作
    V:view           视图      给用户提供页面
    C:controller     控制器      负责调度  传递指令
2. MTV:
    M: model          模型      ORM 对数据库进行操作 ,相当于MVC中的model
    T:template       模板      对HTML文件进行渲染 ,相当于MVC中的view
    V: view           视图      函数  负责业务逻辑 ,相当于MVC中的controller
    

 

django命令

1. django的所有命令
    1. 安装django
        pip install django==1.11.15
    2. 创建项目
        django-admin startproject 项目名
    3. 启动项目
        cd 项目目录
        python manage.py runserver # 127.0.0.1:8000
        python manage.py runserver 80
        python manage.py runserver 0.0.0.0:80
    4. 创建APP
        python manage.py startapp app01
        注册APP
        'app01.apps.App01Config'
    5.     数据库迁移
        python manage.py makemigrations   # 检查models.py是否有变化,记录变化 app01/migrations
        python manage.py migrate          # 将变更记录同步到数据库中
2. django的配置
    1. 注释csrf中间件   可以提交POST请求
    2. 数据库的配置
        ENGINE: mysql
        NAME:    数据库名字
        USER:    用户名
        PASSWORD:    密码
        HOST:     ip
        PORT:    3306
    3. 静态文件的配置
        STATIC_URL = '/static/'    # 别名
        STATICFILES_DIRS = [
            os.path.join(BASR_DIR,'static'),
            os.path.join(BASR_DIR,'static1'),
        ]

    4. TEMPLATES DIRS os.path.join(BASR_DIR,'templates')
    5. INSTALLED_APPS=[
        'app01',
        'app01.apps.App01Config'
    ]
3. 对象和数据库的对应关系
    类   —— 》  数据表
    对象 —— 》  数据行
    属性 —— 》  字段
4. django使用mysql数据库流程:
    1. 创建一个mysql数据库
    2. settings中写配置
        
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': 'library',
                'USER': 'root',
                'PASSWORD': '',
                'HOST': '127.0.0.1',
                'PORT': 3306,
            }
        }
            

    3. 告诉django使用pymysql的模块连接mysql数据库
        在与settings同级的目录下的__init__.py中写代码:
        import pymysql
        pymysql.install_as_MySQLdb()
    4. 在app01/models.py中写类(继承models.Model)
        class Publisher(models.Model):
            id = models.AutoField(primary_key=True)
            name = models.CharField(max_length=32, unique=True)


        class Book(models.Model):
            id = models.AutoField(primary_key=True)
            title = models.CharField(max_length=32, unique=True)
            publisher = models.ForeignKey(to='Publisher', on_delete=models.CASCADE)

            def __repr__(self):
                return "<Book object: {} >".format(self.title)


        class Author(models.Model):
            name = models.CharField(max_length=32, unique=True)
            books = models.ManyToManyField('Book')

            def __repr__(self):
                return "<Author object: {} >".format(self.name)

            __str__ = __repr__

    5. 执行数据库迁移的命令
        python manage.py makemigrations
        python manage.py migrate
    

5. ORM操作
    1. 查
        from app01 import models
        models.Publisher.objects.get(id=1,name='xx')   # 获取一个对象   —— 》一个对象
        models.Publisher.objects.all()            # 获取所有对象      ——》 queryset 对象列表
        models.Publisher.objects.filter(id=1,name='xx')  # 获取满足筛选条件的所有对象  ——》 queryset
        models.Publisher.objects.all().order_by('-id')  
        属性:
            pub_obj.id  
            pub_obj.name

            外键:    
            book_obj.id
            book_obj.title
            book_obj.publisher     ——》 书籍关联的出版社对象
            book_obj.publisher_id  ——》 书籍关联的出版社对象的id
            
            多对多:
            autho_obj.id
            autho_obj.name
            autho_obj.books        ——》管理对象
            autho_obj.books.all()  
        

    2. 增
        pub_obj = models.Publisher.objects.create(name='新的出版社名字')
        外键:
        
        models.Book.objects.create(title='新的书名',publisher=pub_obj)
        models.Book.objects.create(title='新的书名',publisher_id=pub_obj.id)
        
        多对多:
        autho_obj = models.Author.objects.create(name='作者名字')
        autho_obj.books.set([1,3,5])
        
    3.删
        models.Publisher.objects.get(id=1,name='xx').delete()
        
        models.Publisher.objects.all().delete() 
    4. 改
        
        pub_obj.name = '新的名字'
        pub_obj.save()
        
        book_obj.title = '新的书名'
        book_obj.publisher = pub_obj
        # book_obj.publisher_id = 1
        book_obj.save()
        
        
        autho_obj.name = '新的名字'
        autho_obj.save()
        autho_obj.books.set([1,2,3])
        
6. request   ——》 封装请求的所有内容
    request.method    ——》 请求的方式   GET POST
    request.POST      ——》 post请求提交的数据   字典 request.POST['id']  request.POST.get('id',)
    request.GET       ——》 URL的参数
        127.0.0.1:80/del_book/?id=1&name=xxx
7. 函数的返回值  
    HttpResponse('字符串')            ——》 页面显示字符串的内容
    render(request,'模板的名字',{k1:v1})        ——》 整个HTML文件返回给浏览器
    redirect('/index/')                跳转  重定向  响应头  location:/index/

 

 

转载于:https://www.cnblogs.com/perfey/p/9676576.html

相关文章:

  • MySQL5.6 主从复制 ERROR 1776 (HY000): Parameters MASTER_LOG_FILE
  • 设计模式代理
  • [国家集训队]Crash的文明世界
  • 说说 C 语言编程利器 CLion
  • Netty系列文章之构建HTTP(HTTPS)应用程序
  • 配置Redis客户端
  • c# 读取blob数据
  • 一文详解达观数据知识图谱技术与应用——技术直播回顾
  • shell日志颜色处理
  • 关于矩阵自由度的解释
  • 使用包和测试
  • 2018 noip 考前临死挣扎
  • vue增加按钮到表头单元格的解决方法
  • PostgreSQL 10.1 手册_部分 IV. 客户端接口_第 33 章 libpq - C 库_33.19. 在线程化程序中的行为...
  • facl权限(getfacl/setfacl)
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • AngularJS指令开发(1)——参数详解
  • echarts花样作死的坑
  • java小心机(3)| 浅析finalize()
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Objective-C 中关联引用的概念
  • orm2 中文文档 3.1 模型属性
  • swift基础之_对象 实例方法 对象方法。
  • tweak 支持第三方库
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • vue-loader 源码解析系列之 selector
  • 从0到1:PostCSS 插件开发最佳实践
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (3)nginx 配置(nginx.conf)
  • (39)STM32——FLASH闪存
  • (42)STM32——LCD显示屏实验笔记
  • (done) 两个矩阵 “相似” 是什么意思?
  • (二)PySpark3:SparkSQL编程
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (六)Hibernate的二级缓存
  • (三)elasticsearch 源码之启动流程分析
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (算法设计与分析)第一章算法概述-习题
  • *上位机的定义
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .net Stream篇(六)
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [1] 平面(Plane)图形的生成算法
  • [Android]一个简单使用Handler做Timer的例子
  • [BZOJ] 3262: 陌上花开
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • [CF543A]/[CF544C]Writing Code
  • [Enterprise Library]调用Enterprise Library时出现的错误事件之关闭办法