zoukankan      html  css  js  c++  java
  • 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/

     

  • 相关阅读:
    (网页)中的简单的遮罩层
    (后端)shiro:Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.
    (网页)jQuery的时间datetime控件在AngularJs中使用实例
    Maven Myeclipse 搭建项目
    MyBatis 环境搭建 (一)
    java 常用方法
    XML 基础
    JS BOM
    js 事件
    js 的使用原则
  • 原文地址:https://www.cnblogs.com/perfey/p/9676576.html
Copyright © 2011-2022 走看看