Django项目结构,

时间:2014-11-08 14:35:16

标签: python django

我是Django的新手并试图理解"正确的"构建项目的方法,特别是何时以及如何在应用程序中放置单独的功能。

我正在建设的网站将主要包括静态信息(它是假日小屋的信息),我提供了来自主站点项目的视图。我还想要包含一个日历,它将在侧边栏中显示可用性,我已经开始构建它作为一个应用程序" availabilityCalender"因为它将在大多数页面中重复使用,我可以看到我在其他项目中使用它。

我无法弄清楚如何将其挂钩到我的应用程序的页面视图中。大多数在线教程将应用程序视为代表整个页面,并链接到项目的urls.py中的视图。相反,我想将应用程序添加为我的页面的一部分。表达我尝试做的最简单的方法如下:

from django.shortcuts import render
from django.http import HttpResponse
import availabilityCalender


def index(request):
    availabilityCalender.views.monthView()

我希望这只是将应用程序的视图添加到索引视图中。测试时,我在/,'模块'中得到错误" errorAttributeError。对象没有属性' views'"。

我是否尝试使用应用程序是一种不是设计用于或仅使用错误方法的方式?我很抱歉几乎可以肯定是一个非常简单的问题!

  • 编辑 -

我通过更改导入来获得上述代码:

from availabilityCalender.views import monthView


def index(request):
    return monthView(request)

2 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是使用模板继承。您的每个模板都可以扩展包含日历的基本模板。

另一种方法是将您的日历放在自己的模板中,并使用{% include %}模板标记。

如果您的日历中包含与之关联的数据,则下一个问题是将该数据传输到模板。如果您在网站的每个页面上都包含日历,则可以创建自定义上下文处理器,自动将日历数据添加到每个请求中。

如果日历仅在某些页面上,您可以在视图的基础上加载数据。也许您可以将日历功能提取到CalendarMixin视图中,该视图会在get_context_data中加载正确的日历数据。

答案 1 :(得分:0)

首先,您的项目应该具有与此类似的结构:



-/myProject
  -/myproject
    -settinngs.py
    -views.py
    -urls.py
    -/templates
  -mange.py
  -/availabilityCalender
    -models.py
    -views.py




现在您需要确保添加到您的设置INSTALLED_APPS应用程序" myproject.availabilityCalender",一旦完成,它非常简单易用,并在所有项目和其他应用程序中重用您的应用程序。在这种特定情况下,如果您想在myproject / views.py上导入和使用您的应用,请执行以下操作:



from myproject.availabilityCalender.models import <--MODULES YOU NEED FOR YOUR VIEW-->

def monthView(request):
 .
 .
 .
  return render(request, 'index.html')
&#13;
&#13;
&#13;