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/

     

  • 相关阅读:
    Codeforces Round #350 (Div. 2) F. Restore a Number 模拟
    Codeforces Round #374 (Div. 2) C. Journey DP
    Codeforces Round #375 (Div. 2) D. Lakes in Berland DFS
    Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) D. Generating Sets 堆
    Ubuntu 安装 搜狗输入法
    Ubuntu 搜索不到WIFI或连接不上的解决方法
    Ubuntu 线缆被拔出问题
    Codeforces Round #357 (Div. 2) D. Gifts by the List DFS
    Codeforces Round #357 (Div. 2) C. Heap Operations 优先队列
    Codeforces Round #356 (Div. 2) C. Bear and Prime 100 交互题
  • 原文地址:https://www.cnblogs.com/perfey/p/9676576.html
Copyright © 2011-2022 走看看