欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Web框架之Django_01初识

程序员文章站 2022-06-28 12:10:52
摘要: Web框架概述 Django简介 Django项目创建 Django基础必备三件套(HttpResponse、render、redirect) Web框架概述 Django简介 Django项目创建 Django基础必备三件套(HttpResponse、render、redirect) 一、 ......

摘要:

  • web框架概述

  • django简介

  • django项目创建

  • django基础必备三件套(httpresponse、render、redirect)


 一、web框架概述:

python三大主流web框架:

  • django:大而全,自带了很多功能模块,类似于航空母舰(缺点:笨重)
  • flask:短小精悍,自带的功能模块特别少,大部分都是依赖于 第三方模块(小而轻)
  • tornado:异步非阻塞, 主要用于处理高io,多路复用的情况,可以写游戏后端

每一种框架都包含3部分:

  • a: socket
  • b: 路由与视图函数
  • c: 模板渲染

django:

  • a: 用别人的 wsgiref
  • b: 自己写的
  • c: 自己写的

flask:

  • a: 用别人的 werkzeug
  • b: 自己写的
  • c: 用别人的 jingja2

tornado:

  • a: 自己写的
  • b: 自己写的
  • c: 自己写的

二、django简介:

  djang下载:推荐下载1.11.11版本
  命令行直接下载 :pip3 install django==1.11.11
  pycharm下载


  验证是否下载成功:django-admin

  • Web框架之Django_01初识  

 三、创建django项目的方式:

  • 方式1(命令行创建):
    创建django项目:django-admin startproject 项目名
    创建app应用:python3 manage.py startapp app01
    启动django项目:python3 manage.py runserver
    注意:用命令行创建的django项目默认不会自动创建templates文件夹,需要自己手动创建(注意一定要将文件夹路径添加到配置文件中)
    Web框架之Django_01初识

    Web框架之Django_01初识

  • 方式2:(pycharm创建)

    file >>> new project 选择第二个django 需要注意名字不能有中文,选择本地的解释器,勾选后台管理
    创建app
    pycharm命令行创建:python3 manage.py startapp app01
    tools下面run manage task功能栏:启动点小绿色箭头

    强调:
    1.用django一定要保证只有一个在运行状态 切记切记!!!!!!!
    2.一定记得清浏览器的缓存

    Web框架之Django_01初识
  •  app(应用)的概念:
    一个django项目就好比是一所大学
    而app就是大学里面的学院
    这里需要注意一件事:
    新创建的app需要在配置文件中注册才能生效
    installed_apps = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01.apps.app01config'  # 可以用全称
        'app01'                   # 也可以简写
    ]

    Web框架之Django_01初识

  • django项目文件夹结构解读:
    应用名
        migrations  数据库迁移记录相关数据
        admin.py    django后台管理相关
        models.py   模型表相关
        views.py    视图函数相关
    项目名
        settings.py  配置文件
        urls.py      路由与视图函数的映射关系
    templates
        项目用到的所有的html文件
    manage.py 
        django入口文件

    Web框架之Django_01初识

  • django项目的运行:
    命令行:定位到项目目录下之后:
    python3 manage.py runserver

    不过一般我们都在pycharm中运行:
    Web框架之Django_01初识

  • 模板文件配置:(这里再提一下,前面命令行方式创建项目时候也说过)
    templates = [
        {
            'backend': 'django.template.backends.django.djangotemplates',
            'dirs': [os.path.join(base_dir, 'templates')]   #  这是template文件夹位置
            ,
            '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',
                ],
            },
        },
    ]
  • 静态文件配置:
    static_url = '/static/'  # html中使用的静态文件夹前缀
    staticfiles_dirs = [
        os.path.join(base_dir, "static"),  # 静态文件存放位置
    ]

    Web框架之Django_01初识

    注意:
    刚开始学习时可在配置文件中暂时禁用csrf中间件,方便表单提交测试。

    middleware = [
        'django.middleware.security.securitymiddleware',
        'django.contrib.sessions.middleware.sessionmiddleware',
        'django.middleware.common.commonmiddleware',
        # 'django.middleware.csrf.csrfviewmiddleware',      # 将这一行注释掉
        'django.contrib.auth.middleware.authenticationmiddleware',
        'django.contrib.messages.middleware.messagemiddleware',
        'django.middleware.clickjacking.xframeoptionsmiddleware',
    ]

四、django基础必备三件套(小白必会三板斧)

  • from django.shortcuts import httpresponse, render, redirect

    # httpresponse

    内部传入一个字符串参数,返回给浏览器。

    例如:

    def index(request):
        # 业务逻辑代码
        return httpresponse("ok")

    # render

    除request参数外还接受一个待渲染的模板文件和一个保存具体数据的字典参数。

    将数据填充进模板文件,最后把结果返回给浏览器。(类似于我们上面用到的jinja2)

    两种给前端页面传值的方式:

    第一种:
    def reg(request):
            user_dict = {'name':'jason','password':'123'}
            return render(request,'reg.html',{'user_dict':user_dict})
    
    第二种:
    def reg(request):
        user_dict = {'name':'jason','password':'123'}
        return render(request,'reg.html',locals())    

    # redirect(重定向)

    接受一个url参数,表示跳转到指定的url。

    例如:

    def index(request):
        # 业务逻辑代码
        return redirect("/home/")