最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Flask与Django对比

    正文概述 流芳   2020-12-15   565

    Flask与Django对比

    概括

    Django功能大而全,Flask只包含基本的配置 Django的一站式解决的思路,能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。Django有模板,表单,路由,认证,基本的数据库管理等等内建功能。与之相反,Flask只是一个内核,默认依赖于两个外部库: Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以扩展的形式进行嵌入使用。

    Flask 比 Django 更灵活 用Flask来构建应用之前,选择组件的时候会给开发者带来更多的灵活性 ,可能有的应用场景不适合使用一个标准的ORM(Object-Relational Mapping 对象关联映射),或者需要与不同的工作流和模板系统交互。

    Flask 在 Django 之后发布,现阶段有大量的插件和扩展满足不同需要 Django发布于2005年,Flask创始于2010年年中。

    项目区别

    Django 创建项目和创建应用

    django-admin startproject hello_django 
    django-admin startapp howdy12

    其目录结构: 默认情况下,Django项目和应用创建好了之后,只包含空的模型和模板文件,而Flask创建项目之后,目录里面没有任何文件,需要我们手动创建,是没有像Django一样组件分离,而对于需要把组件分离开的项目,Flask有blueprints。

    例如,你可以这样构建你的应用,将与用户有关的功能放在user.py里,把与销售相关的功能放在ecommerce.py里。

    Django把一个项目分成各自独立的应用,而Flask认为一个项目应该是一个包含一些视图和模型的单个应用。当然我们也可以在Flask里复制出像Django那样的项目结构。

    模板

    举一个 Django 模板的例子

    <!-- view.html -->
    <div class="top-bar row">
      <div class="col-md-10">
      <!-- more top bar things go here -->
      </div>
      {% if user %}
      <div class="col-md-2 whoami">
        You are logged in as {{ user.fullname }}
      </div>
      {% endif %}
    </div>
    {% for widget in inventory %}
        <li><a href="/widget/{{ widget.slug }}/">{{ widget.displayname }}</a></li>
    {% endfor %}1234567891011121314

    Flask默认使用一个受Django启发而发展起来的名为Jinja2的模板,其实,所有上面的Django模板的例子在Jinja2里也是好使的。

    模板简单对比

    <!-- Django -->
    <div class="categories">Categories: {{ post.categories|join:", " }}</div>
    
    <!-- Jinja -->
    <div class="categories">Categories: {{ post.categories|join(", ") }}</div>12345

    在Jinja的模板语言里,可以把任何数量的参数传给过滤器,因为Jinja像调用一个Python函数的方式来看待它,用圆括号来封装参数。Django使用冒号来分隔过滤器名和参数,这样就只能传递一个参数了。

    Flask的Jinja模版 for-else-endfor

    {% for item in inventory %}
        <div class="display-item">{{ item.render() }}</div>
    {% else %}
        <div class="display-warn">
        <h3>No items found</h3>
        <p>Try another search, maybe?</p>
        </div>
    {% endfor %}12345678

    Django模版 for-empty-endfor

    {% for item in inventory %}
        <div class="display-item">{{ item.render }}</div>
    {% empty %}
        <div class="display-warn">
        <h3>No items found</h3>
        <p>Try another search, maybe?</p>
        </div>
    {% endfor %}12345678

    除了上述的语法区别,Flask还提供了很多特有的上下文变量(url_for,get_flashed_messages()等)

        更多python相关文章请关注python自学网。


    下载网 » Flask与Django对比

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元