• day59 django初识


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

    • 网络协议
    • 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/')
  • 相关阅读:
    处理了一个“服务器能ping得通,但telnet连接失败”导致数据库登录不了的问题
    解决了一个oracle登录缓慢的问题
    今天解决了一个mysql远程登录和本机ip登录都失败的问题
    c++笔记
    c语言笔记
    常见并发与系统设计
    linux网络IO笔记
    linux文件IO全景解析
    linux网络协议笔记
    长大后才懂的蜡笔小新 ​​​​
  • 原文地址:https://www.cnblogs.com/hz2lxt/p/12937680.html
Copyright © 2020-2023  润新知