【问题标题】:Django: Moving from XAMPP to Django questionsDjango:从 XAMPP 迁移到 Django 问题
【发布时间】:2010-01-30 16:58:46
【问题描述】:

我曾使用过 XAMPP、WAMPP、MAMPP 等,现在开始研究 Django。

我们所做的大部分工作都是以 CMS 为导向的;尽管我们被告知不要使用第三方 CMS(主要是因为用户发现它们很难使用,以及其他问题),但我发现我可以使用 Cake、CodeIgniter 或其中一个编写一个非常简单的 CMS其他 PHP 框架。

然而,我越来越感到沮丧,因为我需要做大量的编码才能启动和运行某些东西,而且有人告诉我 Django 是一个很好的 Python 框架。它似乎也从 reddit 获得了很多关注。

我对从 XAMPP 迁移到 Django 有一些顾虑和疑问。

1) 安全性

任何网络应用程序都应该进行防御性编码。在过去的几年中,我们看到了针对 XSS、SQL 注入、跨站点伪造、会话固定、会话劫持、cookie 劫持的趋势;一个人需要的安全量可能是压倒性的。

Django 做了什么来防止/限制 XSS、SQL 注入、Javascript 注入和消毒输入;一个通常与保护 PHP Web 应用程序相关联?是我需要担心的事情,还是 Django 开箱即用地完成了所有这些事情。

2) /www/ 公用文件夹中有什么内容?

在我阅读的手册中说不要将 manage.py 或其他 .py 内容放在主 webroot 中,所以这意味着我将所有内容都放在 webroot 之外;那里面有什么?

我是否将 /templates/ 目录放在 webroot 中?服务器如何知道要运行什么?

3) 我还能在 Django 项目中使用 .htaccess 吗?我熟悉 Apache,经常用它来做路由,或者阻止坏机器人,但是使用 .htaccess 还能用吗?

4) 定时任务

cronjobs 是否仍然适用于 Python/Django 项目?

5) 运行第三方 perl/其他脚本

在 PHP 中,您可以使用其他库,例如 curl 库、ffmpeg、ImageMagik 以及许多其他库;我还能在 Python/Django 中使用这些库吗?

6) 管理屏幕

Django 为您提供了一个开箱即用的管理屏幕;这仅用于开发目的还是可以上线?我担心管理屏幕的任何安全性。

7) 与讨论、Facebook、Twitter、OpenID、验证码等集成。

PHP 中有一些库可以帮助集成 DisQuss、Facebook、Twitter;但是与这些和其他第三方应用程序集成是否相对容易?

8) 电子商务、SSL

有很多电子商务网站使用 Django 吗?我见过很多 CMS/博客类型的软件,但电子商务网站并不多。我的意思是购物卡、Protx/Paypal 或 Worldpay 集成。

那是另一回事;有适用于 PHP 的 Protx、Paypal、Worldpay 等沙箱——但有适用于 Django 的沙箱吗?

9) 值得吗?

是否值得从 XAMPP 背景迁移到 Django?它真的会让事情变得更快,还是只是营销炒作?

谢谢。

【问题讨论】:

    标签: django


    【解决方案1】:
    1. 安全。 Django 核心团队非常注重安全性,并且非常小心地使 SQL 注入之类的事情变得不可能。下一个版本 1.2 包含一个全新的cross-site request forgery 保护库。显然,在开发应用程序时,您仍然需要注意这些,但 Django 确实可以帮助您。

    2. /www/public 下的内容:没有。 Django 不能通过正常的 Apache 服务机制工作:它连接到(最好是)mod_wsgi,它需要一个文件,然后告诉它运行其余的代码。模板可以放在任何地方,并由您的 Django 设置文件指向,但同样不是由 Apache 直接提供的。

    3. .htaccess:您实际上并不需要它,因为第 2 点:您没有在文件系统层次结构中提供服务。最好的方法是设置虚拟主机并以这种方式管理事物。

    4. Cron 作业:当然。 Django 只是 Python,您可以通过 cron 轻松运行 Python 脚本。 Django 允许您设置自定义命令脚本来初始化 ORM 并让您访问所需的任何内容。

    5. 库:同样,因为 Django 是 Python,您可以访问大量的 Python 库。对于 curl,Python 有 urllib;对于 ImageMagick,它有 PIL;毫无疑问,也有 ffmpeg 的等价物。

    6. 管理员:同样,从一开始就考虑到安全性。关于您是否应该只为您的专家用户使用管理员,或者自定义它并允许所有用户访问,意见不同;使用它作为我的自定义 CMS 界面的基础,我取得了很大的成功。

    7. Facebook 等:是的,所有这些都有库。

    8. 电子商务:有一个完整的电子商务项目,Satchmo,用 Django 编写。存在与所有支付提供商交互的库。

    9. 值得吗?只有你能说出来。我与许多从 PHP 迁移过来的开发人员一起工作的经验是,他们很享受这种体验并且变得更有效率。

    【讨论】:

      【解决方案2】:

      关于 SQL 注入: Django 使用 ORM,它负责 SQL 注入保护,您很少会编写自己的 SQL。如果你这样做了,只需 follow the instructions 了解如何将参数传递给原始查询并防止 SQL 注入。

      django book about security 有一整章可以回答你所有的问题。

      关于 /www/ 的内容: 什么不是代码?问题是不要把python代码放在​​那里。

      在 .htaccess 上: 是的,它应该仍然可以工作(对于 Daniel 指出的任何非 Django 资源)。

      关于 cronjobs: 你是什么意思?

      关于库: Python - 您将与 Django 一起使用的语言 - 具有丰富的库,可能提供与您习惯的功能相同的功能。这是一个关键点:你需要好好学习 Python 才能从 Django 中获益最多。

      在管理界面上:从您的问题来看,这实际上可能对您最有帮助。它们是可定制的(在一定范围内),并且它们确实为员工(它不是针对公共用户,而是针对员工用户)提供了数据库模型的 CRUD 基础知识。这是一个节省时间的方法。您可能需要为高级功能编写自己的模板,但对于大多数针对员工的简单 CRUD(通常是 CMS 的重点),它非常有用且易于设置。

      关于集成:检查Pinax 以获取一组提供额外功能的应用程序。那里有丰富多样的集成解决方案。在 SO 中找到关于 django + facebook 和其他人的问题并不罕见。

      关于电子商务: Check Satchmo out.

      值得吗:现在,我没有使用 XAMPP 的经验。我知道我比 Perl 和 PHP(以及 Java,就此而言)更喜欢 Python。我知道作为一个框架,Django 比我以前使用的任何东西都更易于使用,部署速度更快。

      我的建议是老生常谈了:去构建一个简单的项目并自己决定。你是唯一可以决定 Django 是否适合你的框架的人。

      关于 SO 的一个较早的问题讨论了一些 Django 限制。 My answer to that 可能对你也有帮助。

      【讨论】:

        【解决方案3】:

        我最近开始使用 Django 开发任何新项目,来自 PHP 背景。以下是我对您的问题的看法。

        1) 安全性

        默认情况下,发送到模板的字符串会被转义,这会处理大部分问题。由于您使用的是 ORM,因此 SQL 注入应该不是问题,除非您出于某种原因构建原始查询。

        2) /www/ 公用文件夹中有什么内容?

        Django 不像典型的 PHP 设置那样对 URL 使用文件层次结构。服务器知道从您的 urls.py 和 settings.py 指向模板文件夹的指针运行什么。

        3) 我还能在 Django 项目中使用 .htaccess 吗?我对 Apache 很熟悉,经常用它来做路由,或者阻止坏机器人,但是使用 .htaccess 还能用吗?

        如上所述,它同样适用于静态内容。据我所知,对于动态页面,您可能希望为要阻止的客户端实施某种其他形式的身份验证或重定向。

        4) 定时任务

        你没有理由不能使用 cron 来做任何事情,因为你仍然有一个普通的 Linux 系统。

        5) 运行第三方 perl/其他脚本

        当然,您会想要使用这些库的 Python 版本。例如 FFMpeg PythonMagick

        我用内置的 urllib 和 urrlib2 库替换了我对 Curl 的大部分需求,但如果你需要的话,还有PyCurl

        6) 管理屏幕

        管理员屏幕旨在供您自己的管理员(即站点工作人员)使用。这样做是可行的,但它不应该是您构建面向公众的项目的脚手架。

        7) 与讨论、Facebook、Twitter、OpenID、验证码等集成。

        那里有很多人使用 Python 和 Django,而且我在查找库时没有遇到任何问题。根据我的经验,对某些东西的支持比 PHP 少一点,但通常质量更高。

        8) 电子商务、SSL

        我没有尝试过支付集成,所以我不能说。不确定其他网站,但 Paypal Sandbox 是由 Paypal 运行的,不是吗?我认为这与您在服务器上使用的内容无关,所以可以正常访问它。

        9) 值得吗?是否值得从 XAMPP 背景迁移到 Django?它真的会让事情变得更快,还是只是营销炒作?

        我转向 Django 是因为 Python 确实是一种比 PHP 更引人注目的语言。它会让事情变得更快吗?我不确定 Django 与 PHP MVC 框架在这方面的优势是什么。没有灵丹妙药。

        您必须记住,您不仅在学习新框架,而且还在学习新语言。如果您以前从未使用过 Python,将会有一些学习曲线。但我发现 Python 和 Django 都相当容易学习。该语言的简洁设计非常棒,Django 的设计也非常好。我确实觉得它提高了我的工作效率。在我学习的过程中,我找到了关于我在 Django 中需要做的大部分事情的 sn-ps 或文章,所以适应起来非常简单。

        【讨论】:

          猜你喜欢
          • 2021-11-20
          • 2011-10-26
          • 1970-01-01
          • 2016-08-24
          • 2016-07-29
          • 2015-08-26
          • 1970-01-01
          • 2011-01-16
          相关资源
          最近更新 更多