Django:从XAMPP转到Django问题

时间:2010-01-30 16:58:46

标签: django

我曾与XAMPP,WAMPP,MAMPP等合作,并开始关注Django。

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

然而,我越来越感到沮丧的是我需要做的编码量才能使某些东西运行起来,而且我被告知Django是一个很好用的Python框架。它似乎也从reddit中得到了很多嗡嗡声。

关于从XAMPP迁移到Django,我有一些担忧和疑问。

1)安全性

任何网络应用都应该采用防御措施进行编码。在过去几年中,我们已经看到了一个防止XSS,SQL注入,跨站点伪造,会话固定,会话高兴,cookie高兴的运动;一个人需要的安全数量可能是压倒性的。

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

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

在我阅读的手册中说它不会将manage.py或其他.py内容放在主webroot中,所以这意味着我把所有东西放在了webroot之外;那有什么进展?

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

3)我还可以在Django项目上使用.htaccess吗?我熟悉Apache,经常使用它来做路由,或阻止坏机器人,但是使用.htaccess仍然可以工作吗?

4)Cronjobs

cronjobs还能用于Python / Django项目吗?

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

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

6)管理员界面

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

7)与Discuss,Facebook,Twitter,OpenID,验证码等整合

PHP中的库有助于整合DisQuss,Facebook,Twitter;但与这些和其他第三方应用程序集成相对容易吗?

8)电子商务,SSL

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

那是另一回事;有针对PHP的Protx,Paypal,Worldpay等沙箱 - 但Django有没有?

9)值得吗?

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

感谢。

3 个答案:

答案 0 :(得分:5)

  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迁移的开发人员一起工作的经验是,他们享受了这种体验并且变得更有效率。

答案 1 :(得分:3)

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

django book about security上有一整章应该回答你的所有问题。

什么进入/ www /:什么不是代码?关注的是不要将python代码放在​​那里。

On .htaccess:是的,它应该仍然有效(对于Daniel指出的任何非Django资源)。

关于cronjobs:你是什么意思?

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

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

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

关于电子商务: Check Satchmo out.

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

我的建议已经过时了:去构建一个简单的项目并自己构思。你是唯一有能力决定Django是否适合你的框架。

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

答案 2 :(得分:2)

我最近开始在PHP背景下开发Django中的任何新项目。以下是我对你的问题的看法。

1)安全性

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

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

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

3)我还可以在Django项目上使用.htaccess吗?我熟悉Apache,经常使用它来做路由,或阻止坏机器人,但是使用.htaccess仍然可以工作吗?

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

4)Cronjobs

没有理由不能使用cron,因为你仍然拥有一个普通的Linux系统。

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

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

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

6)管理员界面

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

7)与Discuss,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我需要做的大部分事情的片段或文章,因为我一直在学习,所以适应变得非常简单。