Django开发 - 如何正确布局和使用代码

时间:2011-04-01 14:49:39

标签: php django codeigniter

嗨,我是一名PHP开发人员,试图转换为Django,我很难理解在哪里放置东西以及如何使用新语言。基本上我想知道的是例如在codeigniter中我会在我的控制器中创建类和函数。我在django那里做什么?

我相信django中的'view'更像是MVC框架中的控制器,但我能找到的所有视图示例都非常简单,只需调用模板并传递一些数据。

我目前在当前项目中有索引视图和'费率'视图。索引页面将通过JS调用速率并传递一些GET变量。在我的php版本中,我使用这些来实例化我的费率类,当它具有所有需要的功能时。我想在Django中这样做。

3 个答案:

答案 0 :(得分:1)

它被称为“MVT”而不是“MVC”的原因是Django的“View”意味着“数据的呈现(根据给定的逻辑)”和“模板”意味着“显示数据”。 “在传统的MVC范例中,“Controller”表示“逻辑执行器”,“View”表示“执行逻辑结果的表示”。 (它们几乎是相同的想法,但并不完全相同)。

那么,这是什么意思?基本上,如果我在Symfony中构建一些东西,我会将所有逻辑放在sfAction组件中。在CodeIgniter中,它将在CI_Controller中。在Django中,我将所有逻辑放在“视图”中。

就像CI(和Zend等人)将从Controller后代调用“View”一样,Django视图也将从其“View”调用“Template”。 (Symfony的观点通常用不同的语法来表达,所以如果需要,我会留给读者研究。)


看看你的例子,看起来你想在“视图”中调用一个方法(该视图在urls.py中配置),它只是实例化另一个具有“你所有逻辑”的对象。类似的东西:

def ratesHandler(request):
    rate = MyRatesClass(request.GET)
    return HttpResponse("Insert something here. ") #or render_to_response

答案 1 :(得分:0)

逻辑始终属于视图。你可以把你喜欢的任何逻辑放在那里 - 除非你愿意,否则不需要把它放到课堂上。但是,如果逻辑与特定模型相关,则最好将其作为模型的方法或模型的管理器。

答案 2 :(得分:0)

在django中:“模型”进入models.py,“控制器”进入views.py,“视图”进入模板。

模型往往是子类django.db.models.Model

的类

控制器(在views.py中)通常是函数,但如果愿意,可以使用类。

请注意,如果您只是显示数据库中的数据,则通常可以使用generic views,因此您几乎不需要进行任何编码。

我无法判断你帖子的最后两段是否有问题。如果那里有问题,请编辑您的帖子,以便明确。

相关问题