码迷,mamicode.com
首页 > 其他好文 > 详细

MTV框架和django基本命令

时间:2018-09-19 21:51:33      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:目录   控制器   htm   字符串   djang   属性   ack   primary   ima   

框架

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/

 

 

MTV框架和django基本命令

标签:目录   控制器   htm   字符串   djang   属性   ack   primary   ima   

原文地址:https://www.cnblogs.com/perfey/p/9676576.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!