簡體   English   中英

Django項目結構,

[英]Django project structure,

我是Django的新手,並試圖了解構建項目的“正確”方式,尤其是何時以及如何在應用程序中放置單獨的功能。

我正在構建的站點將主要包含靜態信息(用於度假小屋),並提供主要站點項目的視圖。 我還希望包括一個日歷,它將在邊欄中顯示可用性,我已經開始將其構建為應用程序“ availabilityCalender”,因為它將在大多數頁面中重復使用,並且可以在其他項目中使用它。

我不知道的是如何將其連接到應用程序的頁面視圖中。 大多數在線教程將應用程序視為整個頁面,並從項目的urls.py鏈接到視圖。 相反,我想將應用程序添加為頁面的一部分。 表示我要執行的操作的最簡單方法如下:

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


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

我希望這只會將應用程序的視圖添加到索引視圖中。 測試時,我收到錯誤“ /上的errorAttributeError,'模塊'對象沒有屬性'視圖'”。

我是否嘗試使用應用程序不是針對其設計的方法,還是只是使用了錯誤的方法? 我為幾乎肯定是一個非常簡單的問題致歉!

  • 編輯-

我通過更改導入使上述代碼起作用:

from availabilityCalender.views import monthView


def index(request):
    return monthView(request)

一種實現方法是使用模板繼承。 您的每個模板都可以擴展包含日歷的基本模板。

另一種方法是將日歷放在其自己的模板中,並使用{% include %}模板標簽。

如果您的日歷中有與之相關的數據,那么下一個問題就是將這些數據添加到模板中。 如果在網站的每個頁面上都包括日歷,則可以創建一個自定義上下文處理器,該處理器將日歷數據自動添加到每個請求中。

如果日歷僅在某些頁面上,則可以按視圖加載數據。 也許您可以將日歷功能提取到CalendarMixin視圖中,該視圖將正確的日歷數據加載到get_context_data

首先,您的項目應具有類似於以下的結構:

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

現在,您需要確保將設置“ myproject.availabilityCalender”添加到設置INSTALLED_APPS中。完成此操作后,它非常容易使用,並且可以在所有項目和其他應用中重復使用您的應用。 在這種特定情況下,如果要在myproject / views.py上導入和使用您的應用程序,只需執行以下操作:

 from myproject.availabilityCalender.models import <--MODULES YOU NEED FOR YOUR VIEW--> def monthView(request): . . . return render(request, 'index.html') 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM