zoukankan      html  css  js  c++  java
  • Django简介

    一,MVC与MTV模型

      MVC:把web应用分为模型Model,控制器Controller和视图View三层。

        Model模型:负责在数据库中存取数据(通过orm),并且把数据传递给视图VIew

        Controller控制器:负责处理用户输出的数据,决定传递指令给模型还是给视图

        VIew视图:向用户展示信息。

      MTV:Django的的MTV模式本质和MVC一样,只是定义上不同而已

        M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。

        T 代表模板 (Template):负责如何把页面展示给用户(html)。

        V 代表视图(View):   负责业务逻辑,并在适当时候调用Model和Template。

        ps:除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template。

    二,下载Django

      方式一:pip install django == 1.11.11(指定版本号)

      方式二:用pycharm中的settings进行安装

      方式三:用pycharm的Terminal命令进行安装

    三,创建django项目工程以及应用

      命令行创建:

        创建django项目:django-admin startproject 项目名

        创建app应用:python3 manage.py startapp app01

        启动django项目:python3 manage.py runserver 

        ps:用命令行创建django默认不会自动创建templates文件夹需要你手动自己创建(注意改文件夹路径是否被添加配置文件中)

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')]
            ,
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]

      pycharm创建:

        创建django项目:FILE >>> new project 选择第二个django 需要注意名字不能有中文,选择本地的解释器,勾选后台管理

        创建app:pycharm命令行创建:python3 manage.py startapp app01

        启动:点击绿色小箭头

    注意事项:

      1.计算机的名称不能有中文

      2.一个pycharm窗口就是一个项目,不要多个项目放在一个窗口里面

      3.项目名不能起中文

      4.用django一定要保证只有一个在运行状态

      5.一定记得清浏览器的缓存

    四,Django各个文件的作用

      在创建app时需要配置文件中注册才能生效!

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01' # 简写
        # 'app01.apps.App01Config' # 全称(两者都可以使用)
    ]

      应用名:

        migrations :数据库迁移记录相关数据

        admin.py:django后台管理相关

        models.py :模型表相

        views.py:视图函数相关

      项目名:

        settings.py :配置文件

        urls.py:路由与视图函数的映射关系

      templates:

        项目用到的所有的html文件都放在这个文件夹里面

      manage.py 

        django入口文件

    五,三个最基本的操作

      HttpResponse:返回字符串

      render:返回一个html页面

      redirect:重定向

      案例:

        app01下的view.py

    from django.shortcuts import render,HttpResponse,redirect
    
    # Create your views here.
    def index(request):
        # 返回字符串
        return HttpResponse("你好啊 我的奴隶!")
    
    def reg(request):
        user_dict = {'name':'jason','password':'123'}
        # 返回一个html文件
        # return render(request,'reg.html',{'user_dict':user_dict})
        return render(request,'reg.html',locals()) # 上面所有的信息
    
    def login(request):
        # 重定向(转向第三方网址)
        return redirect('http://www.xiaohuar.com')

        同时MyDjango下面的urls.py添加

    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/', views.index),
        url(r'^reg/', views.reg),
        url(r'^login/', views.login),
        url(r'^xxx/', views.xxx),
    ]

       ps:django识别到你的代码变话,然后自动重启,但是有时候反应速度比较慢。最好手动重启,也可以多刷新以及浏览器。

      如何用Django 来操作mysql

      第一步:修改settings.py的配置信息(默认为sqlite3,改为mysql):

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql', # 修改数据库引擎
            'NAME': 'my_django', # 定义数据库名
            'USER':'root', # 用户名
            'PASSWORD':'641220', # 密码
            'HOST':'127.0.0.1', # IP
            'PORT':'3306', # mysql端口
        }
    }

       第二步:在工程名的__init__文件下如下配置:

    import pymysql
    pymysql.install_as_MySQLdb()

      第三步:在操作数据的应用下的models.py中如下设置表名,字段等等:

    from django.db import models
    __author__ = 'root'
    # Create your models here.
    
    from django.db import models
    class Student(models.Model):
        """
        创建如下几个表的字段
        """
        # 学号 primary_key=True: 该字段为主键
        studentNum = models.CharField('studentNum', primary_key=True, max_length=15)
        # 姓名 字符串 最大长度20
        name = models.CharField('name', max_length=20)
        # 年龄 整数 null=False, 表示该字段不能为空
        age = models.IntegerField('age', null=False)
        # 性别 布尔类型 默认True: 男生 False:女生
        sex = models.BooleanField('sex', default=True)
        # 手机 unique=True 该字段唯一
        mobile = models.CharField('mobile', unique=True, max_length=15)
        # 创建时间 auto_now_add:只有在新增的时候才会生效
        createTime = models.DateTimeField(auto_now_add=True)
        # 修改时间 auto_now: 添加和修改都会改变时间
        modifyTime = models.DateTimeField(auto_now=True)
        # 指定表名 不指定默认APP名字——类名(app_demo_Student)
        class Meta:
            db_table = 'student' 

      第四步:手动在mysql中创建刚刚设置的数据库(数据库名用刚刚在settings中使用的)

      第五步:生成一个迁移文件,在终端中输入:python3 manage.py makemigrations

      第六步:生成成功之后会在migrations中生成一个0001_initial.py文件。然后再向终端中输入:python3 manage.py migrate

      这样表就创建成功了。

      查询数据:

      第一步:首先再view中定义一个查询函数,取出想要的数据:

    def select(request):
        # 查询name = tom1的数据
        # sql语句已经被django封装好了
        result = Student.objects.filter(name='tom1')
        """
        result为<class 'django.db.models.query.QuerySet'>的对象
        需要进行数据处理
        """
        user_list = []
        for i in result:
            content = {'studentNum': i.studentNum, 'name': i.name, 'sex': i.sex}
            user_list.append(content)
        print(user_list)
        return render(request,'reg.html',{'user_list':user_list})

      第二步:使用render将数据放在html文件,并显示:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
        <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
        <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
    </head>
    <body>
    <div class="container">
        <div class="row">
            <div class="col-md-8 col-md-offset-2">
                <table class="table table-hover table-striped table-bordered">
                    <thead>
                        <tr>
                            <th>id</th>
                            <th>name</th>
                            <th>sex</th>
                        </tr>
                    </thead>
                    <tbody>
                        {% for user in user_list %}  <!--[{},{},{},{}]-->
                            <tr>
                                <td>{{ user.studentNum }}</td>
                                <td>{{ user.name }}</td>
                                <td>{{ user.sex}}</td>
                            </tr>
                        {% endfor %}
                    </tbody>
                </table>
            </div>
        </div>
    </div>
    </body>
    </html>

      ps:别忘了在urls.py文件中配置新的url后缀。

    from django.conf.urls import url
    from django.contrib import admin
    from app03 import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^insert/',views.insert),
        url(r'^select/',views.select) # 调用查询数据的函数
    ]

      

      

          

      

      

        

        

      

     

  • 相关阅读:
    《民工》随笔
    最近繁忙,暂停更新
    UVA 839 Not so Mobile
    UVA 310 Lsystem
    UVA 10602 Editor Nottoobad
    UVA 10562 Undraw the Trees
    UVA 327 Evaluating Simple C Expressions
    UVA 10954 Add All
    UVA 270 Lining Up
    UVA 699 The Falling Leaves
  • 原文地址:https://www.cnblogs.com/ay742936292/p/10980373.html
Copyright © 2011-2022 走看看