zoukankan      html  css  js  c++  java
  • django

     一、Django简介

    Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。

    使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 Django 本身基于 MVC 模型,即 Model(模型)+ View(视图)+ Controller(控制器)设计模式,MVC 模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。

    每次看到这里都要回顾几个知识点:

    • 网络协议
    • http协议(四大特性)
    • 数据格式
    • 响应状态码

    复习地址:

    一、借助wsgiref模块实现简易版web框架

    '''
    urls.py								路由与视图函数的对应关系		
    views.py							视图函数(后端的业务逻辑)
    manage.py							启动文件
    templates文件夹					  专门用来存放html
    
    '''
    

    二、动静态页面

    • 静态页面
      • 页面上的数据是直接写死的,不会变化
    • 动态页面
      • 页面上的数据是实时获取的
    # 动态网页制作1
    # 主要方法是获取后端页面代码(字符串),替换字符串中的某些数据为我们后端写的代码,比如下面的时间
    import datetime
    def get_time(env):
        current_time = datetime.datetime.now().strftime('%Y-%m-%d %X')
        # 如何将后端获取到的数据"传递"给html文件?
        with open(r'templates/03 mytime.html','r',encoding='utf-8') as f:
            data = f.read()
            # data就是一堆字符串
        data = data.replace('dwadasdsadsadasdas',current_time)   # 在后端将html页面处理好之后再返回给前端
        return data
    
    
    # 动态页面制作2
    # 将一个字典传递给html文件 并且可以在文件上方便快捷的操作字典数据
    from jinja2 import Template
    def get_dict(env):
        user_dic = {'username':'jason','age':18,'hobby':'read'}
        with open(r'templates/04 get_dict.html','r',encoding='utf-8') as f:
            data = f.read()
        tmp = Template(data)
        res = tmp.render(user=user_dic)
        # 给get_dict.html传递了一个值 页面上通过变量名user就能够拿到user_dict
        return res
    
    # 后端获取数据库中数据展示到前端页面
    
    <body>
    
    # 模版语言
    # 可以简单的取值
    {{ user }}
    {{ user.get('username')}}
    {{ user.age }}
    {{ user['hobby'] }}
    
    # 也可以for循环创建table
    {% for user_dict in user_list %}
                            <tr>
                                <td>{{ user_dict.id}}</td>
                                <td>{{ user_dict.username}}</td>
                                <td>{{ user_dict.password}}</td>
                                <td>{{ user_dict.hobby}}</td>
                            </tr>
    {% endfor%}
    
    </body>
    

    三、python三大主流web框架

    A:socket部分

    B:路由与视图函数的对应关系(路由匹配)

    C:模版语法

    • django
      • 特点:大而全,自带的功能多
      • 缺点:笨重
      • A是用别人的:wsgiref模块,B是用自己的,C是用自己的
    • flask
      • 特点:小而精,自带的功能少,但是第三方的库多
      • 缺点:比较依赖第三方开发者
      • A是用别人的:werkzeug(内部还是wsgiref模块),B是自己写的,C是用别人的(jinja2)
    • tornado
      • 特点:异步非阻塞,支持高并发,可以作为游戏服务器开发
      • 缺点:None
      • ABC都是自己写的

    四、启动一个django项目

    1 启动前的注意事项

    1.1 计算机的问题

    • 计算机名称不能有中文
    • 一个pycharm窗口只能开一个项目
    • 项目里面的所有文件也尽量不能出现中文
    • python解释器尽量使用3.4-3.6之间的版本,如果用高版本的python可能会报错,点击最后一个报错信息,删除一个逗号即可。

    1.2 django版本的问题

    1.X,2.X用的比较多3.X由于是最近发行的先不考虑

    目前学习的版本是1.11.11

    1.3 django安装

    命令行输入:pip3 install django==1.11.11

    或者在settings里面安装,注意要切换python解释器(网络波动可以切换到国内资源网站的,下载好一点)

    检验是否安装成功,在命令行输入:django-admin

    2 django的基本操作(终端版)

    2.1 创建django项目

    到指定盘符cmd输入:django-admin startproject mysite

    此时会发现创建了一个文件夹

    • mysite
      • manage.py
      • mysite
        • '_init _.py'
        • settings.py
        • urls.py
        • wsgi.py

    2.2 启动django项目

    cmd切换到mysite下,输入:python manage.py runserver

    2.3 创建应用

    cmd到mysite下,输入:python manage.py startapp app01(app的名称应该见名知意)

    3 django基本操作(pycharm版)

    创建项目:点击新建项目即可(注意python版本)

    启动:pycharm命令行,或者启动manage.py

    创建app:pycharm命令行,或者点击tools,点击run manage.py task... 提示创建

    修改端口号:点击edit confi

    4 应用(app)

    django是一款专门开发app的web框架,这里的app不是手机的app,而是功能的意思。一个app代表一类功能,一个django框架就是一群app的集合体。

    注意:每次创建完app后都要到settings里去注册app

    # 找到项目下的settins.py
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01.apps.App01Config',  # 全写
      	'app01',			 # 简写
    ]
    

    5 主要文件介绍

    mysite(项目文件夹)

    • mysite(文件夹)
      • settings.py 配置文件
      • urls.py 路由与视图函数的对应关系(路由层)
      • wsgi.py wsgiref模块(不考虑)
    • manage.py 启动文件
    • db.sqlite3 自带的小型数据库,功能不是很完善还有bug
    • app01 (文件夹)
      • admin.py django后台管理
      • apps.py 注册使用
      • migrations 数据迁移记录
      • models.py 数据库相关的模型类(orm)
      • tests.py 测试文件
      • views.py 视图函数

    6 命令行创建和pycharm创建的区别

    # 1 命令行创建不会自动有templatew文件夹 需要你自己手动创建而pycharm会自动帮你创建并且还会自动在配置文件中配置对应的路径
    # pycharm创建
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')]
    ]
    # 命令行创建
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
    ]
    """
    也就意味着你在用命令创建django项目的时候不单单需要创建templates文件夹还需要去配置文件中配置路径
    'DIRS': [os.path.join(BASE_DIR, 'templates')]
    """
    

    7 django小白必会三板斧

    • HttpResponse
      • 返回字符串类型的数据
    • render
      • 返回html文件
    • redirect
      • 重定向
      • 指定页面:return redirect('https://www.mzitu.com/')
      • 拼接当前页面:return redirect('/home/')
  • 相关阅读:
    MySQL面试题-基础
    IDEA 创建Spring项目后org.springframework.boot报错
    IDEA上传项目到SVN
    解决:idea中右键项目找不到subversion
    关于fromdata的上传文件问题
    PHP清除数组中为0的元素
    PHP删除数组中重复的元素
    PHP代码篇(六)--如何根据邀请人id查询满足条件的会员上级
    PHP对URL进行字符串编码
    PHP时间戳相互转换
  • 原文地址:https://www.cnblogs.com/Tornadoes-Destroy-Parking-Lots/p/12952917.html
Copyright © 2011-2022 走看看