DJANGO VS. WEB2PY

Many people would like to know the differences between Django and web2py. In this short entry, I will make a comparison of two popular Python web frameworks, Django and web2py.

  • Django is an MTV framework, web2py is an MVC framework.

  • Web2py lets you focus on developing your application, Django doesn't. It wants you to do all its stuff.

  • With web2py you don't need to import anything but with Django you need to import everything that you will use. I think Django way is better here. However this is how web2py makes you focus on developing the application.

  • Web2py has no configuration or settings but Django has. Of course it is nothing compared to Java configuration files.

  • Both frameworks support backward compatibility.

  • Web2py automatically migrates your database, Django doesn't. Of course you can disable this if you wish.

  • Both frameworks support shell interacting.

  • Web2py automatically detects and renders the views but Django doesn't.

  • Web2py has two kinds of administration. One is Application Admin in where you can develop your application, the other one is Django like administration. Django has way more better administration panel than web2py with many options you can use.

  • Web2py has a better template system than Django. It is a lot permissive. No endif, endfor, endifequal, endifnotequal or {% %}. Everything goes between {{ }} and {{ pass }}. As of 1.2 Django supports smart if tags.

  • Web2py lets you use Python expressions in your views but Django doesn't. In fact, Django's template system is limiting the developer. You can simply use

     
    1. {{ if a: }}

    2. show something

    3. {{ else: }}

    4. show another thing.

    5. {{ pass }}

    6.  
  • Both frameworks support layouts.

  • Django has a way better ORM and creating models with Django is easier I think. While Django doesn't automatically import your models, you don't have to use file names such as 0_model.py, 1_model.py. This is not pretty. You can see some examples:

     
    1. # Django way:

    2. from django.db import models

    3. class Publisher(models.Model):

    4. name = models.CharField(maxlength=30)

    5. address = models.CharField(maxlength=50)

    6. city = models.CharField(maxlength=60)

    7. state_province = models.CharField(maxlength=30)

    8. country = models.CharField(maxlength=50)

    9. website = models.URLField()

    10.  
    11. # web2py way:

    12. db.define_table('publisher',

    13. Field('name', length=30),

    14. Field('address', length=50),

    15. Field('city', length=60),

    16. Field('state_province', length=30),

    17. Field('country', length=50),

    18. Field('website', requires=IS_URL())

    19. )

    20.  
    21. # Django way:

    22. p = Publisher(name='Apress',

    23. address='2855 Telegraph Ave.',

    24. city='Berkeley',

    25. state_province='CA',

    26. country='U.S.A.',

    27. website='http://www.apress.com/')

    28. p.save()

    29.  
    30. # web2py way:

    31. p = db.publisher.insert(name='Apress',

    32. address='2855 Telegraph Ave.',

    33. city='Berkeley',

    34. state_province='CA',

    35. country='U.S.A.',

    36. website='http://www.apress.com/'

    37. )

    38.  
  • Django has a better URL routing than web2py. I find web2py routes more complex and difficult to set. Also both frameworks supports reverse url routing which is good. Django is a bit better on this since if you add a "name" attribute to the url, you can use it with the "url" template tag.

  • Both frameworks support internationalization however I find web2py's way a lot easier and elegant.

  • Web2py forms are more easy to use than Django forms.

     
    1. form1 = SQLFORM(db.publisher) # generates a create form.

    2. form2 = SQLFORM(db.publisher, db.post[1], deletable=True), # generates an update form.

    3.  
  • Both frameworks support validation but Web2Py doesn't have object validation whereas Django has. (See comment #6.)

  • Django templates support blocks and it supports it really good. Web2py's approach to template blocks was not the way it should be. As of 1.78.1 Web2Py supports blocks as Django.

  • Both frameworks support multiple databases. This is new in Django 1.2 release.

  • Both frameworks have great community. You can get help either on freenode channels or the google groups of both frameworks.

This is all I can recall for now. I will update the post when necessary so do not hesitate to comment and contribute to comparison.

Update (30/04/2010): Added #18.

Update (11/05/2010): Django supports object validation.

Update (18/05/2010): Updated #10. Updated #13. Updated #18. Added #19.

--------------------- 本文来自 snail200x 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/snail200x/article/details/9612283?utm_source=copy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Django manage.py命令是Django框架中的一个命令行工具,用于执行各种管理任务,如创建数据库、运行开发服务器、执行数据库迁移等。通过在终端中输入“python manage.py”加上相应的命令,可以执行各种管理任务。例如,“python manage.py runserver”可以启动开发服务器,“python manage.py migrate”可以执行数据库迁移。 ### 回答2: django的manage.py命令是一个用于管理和执行各种django项目操作的命令行工具。 通过在终端或命令行中运行manage.py命令,可以执行以下操作: 1. 启动开发服务器:使用`python manage.py runserver`命令可以启动一个开发服务器,用于在开发环境中运行django应用程序。 2. 迁移数据库:使用`python manage.py makemigrations`命令可以创建数据库迁移文件,用于修改数据库结构。然后使用`python manage.py migrate`命令可以应用这些迁移文件,更新数据库结构。 3. 创建超级用户:使用`python manage.py createsuperuser`命令可以创建一个拥有管理员权限的超级用户,用于管理django应用程序。 4. 执行单元测试:使用`python manage.py test`命令可以执行django应用程序中的单元测试。 5. 生成管理后台模板代码:使用`python manage.py startapp`命令可以创建一个新的django应用程序,并使用`python manage.py startapp myapp`命令可以生成一个包含默认模板代码的admin.py文件,用于自定义管理后台。 6. 收集静态文件:使用`python manage.py collectstatic`命令可以将静态文件(如CSS、JS和图像文件)从各个应用程序收集到一个单独的目录中,以便在生产环境中进行静态文件的管理。 总之,manage.py命令是django中非常强大和实用的命令行工具,可以方便地进行各种管理和操作。它简化了django项目的开发和管理流程,提高了开发效率。 ### 回答3: Django是一个开源的Python web开发框架,提供了一系列方便的工具和库来简化开发过程。其中,manage.py是Django的命令行工具,用于执行各种管理操作。 manage.py的使用非常简单,只需在命令行中输入python manage.py以及相关参数即可调用不同的命令。以下是一些常见的manage.py命令及其功能: 1. runserver:运行开发服务器,用于本地开发和调试。通过指定IP地址和端口号,可以启动一个轻量级的Web服务器来快速测试应用程序。 2. startapp:创建新的Django应用程序。通过指定应用程序名称,manage.py会自动创建必要的目录结构和文件,帮助开发人员快速搭建应用程序的基础。 3. makemigrations:生成数据库迁移脚本。当我们对模型文件进行修改或新增时,manage.py可以帮助我们自动生成相应的数据库迁移脚本,方便数据库更新和版本控制。 4. migrate:执行数据库迁移操作。通过运行manage.py migrate命令,Django会按照之前生成的迁移脚本,将修改应用到数据库中。 5. shell:启动Django的交互式Python shell。这个shell环境已预加载有Django的配置,可以方便地进行数据库查询操作和调试。 除了以上常用命令外,manage.py还提供了许多其他功能,如创建超级用户、导入/导出数据等。通过查阅Django文档,可以了解到管理命令的完整列表和详细使用说明。 总结:manage.py是Django框架提供的命令行工具,用于执行各种管理操作,包括运行开发服务器、创建应用程序、生成数据库迁移脚本、执行数据库迁移等。它是Django开发中的一个重要工具,方便开发人员快速进行开发、调试和管理工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值