Django筆記-ProgramRules

來源:互聯網
上載者:User

 本節介紹部分django的編碼規範:

settings.py中要使用相對路徑:
import os
DIRNAME = os.path.dirname(__file__)
MEDIA_ROOT = os.path.join(DIRNAME, 'static')

example.com/
   README
   settings.py
   urls.py
   APP1/
   APP2/
   docs/
       This will hold the documentation for your project
   static/
       -In production this will be the root of your MEDIA_URL
       css/
       js/
       images/
   tests/
       - Project level tests (Each app should also have tests)
   uploads/
       - content imgs, etc
   templates/
       - This area is used to override templates from your reusable apps
       flatpages/
       comments/
       example/
       app1/
       app2/
      
Admin
非必須
放在 APP/admin.py 檔案中
Admin 的 MODEL 類命名為 MODELAdmin
上下文處理器
放在 APP/context_processors.py 檔案中
內容來源
放在 APP/feeds.py 檔案中
表單
放在 APP/forms.py 檔案中
Managers
放在 APP/managers.py 檔案中
中介軟體
放在 APP/middleware.py 檔案中
實現儘可能少的任務
模型
放在 APP/models (.py 檔案中或目錄下)
遵循 Django’s 模型約定
模板
放在 APP/templates/APP/template.html 檔案中

為了盡量標準化 Django 模板區塊 (block) 名稱, 我建議通常情況下使用以下區塊名稱.
{% block title %}
這個區塊用來定義頁面的標題. 你的 base.html 模板很可能要在這個 tag 之外定義網站名字 (Site’s name) (即便使用了 Sites 架構), 以便能夠放在所有頁面中.
{% block extra_head %}
我認為這是個非常有用的區塊, 很多人已經以某種方式在使用了. 很多頁面經常需要在 HTML 文檔頭添加些資訊, 比如 RSS 源, Javascript, CSS, 以及別的應該放在文檔頭的資訊. 你可以, 也很可能將會, 定義另外專門的區塊 (比如前面的 title 區塊) 來添加文檔頭的其它部分的資訊.

{% block body %}
這個 tag 用來包含頁面的整個 body 部分. 這使得你在 app 中建立的頁面能夠替換整個頁面內容, 不僅僅是本文內容. 這種做法雖不常見, 但當你需要時, 它確實是一個非常方便的 tag. 你可能還沒注意到, 我一直儘可能的使 tag 名字和 HTML 標籤名稱保持一致.

{% block menu %}
你的菜單 (導覽列) 應該包含在這個區塊中. 它是針對網站級的導航, 不是每個頁面專屬的導覽功能表.

{% block content %}
這個區塊用來放置頁面本文內容. 任何頁面本文內容都可能不一樣. 它不包含任何網站導覽, 資訊頭, 頁尾, 或其它任何屬於 base 模板的東東.

其它可能的區塊
{% block content_title %}
用來指定 content 區塊的 “title”. 比如 blog 的標題. 也可以用來包含 content 內的導航 (譯註: 比如提綱), 或其它類似的東東. 大致都是些頁面中並非主要內容的東東. 我不知道這個區塊是否應該放到 content tag 內, 並且對應於前面建議的 content tag, 是不是還需要一個 main_content 區塊.

{% block header %} {% block footer %}
任何每個頁面都可能修改的文本地區的頁面和頁尾.

{% block body_id %} {% block body_class %}
用來設定 HTML 文檔 body 標籤的 class 或 id 屬性. 在設定樣式或其它屬性時非常有用.

{% block [section]_menu %} {% block page_menu %}
這是對應於之前建議的 menu 區塊. 用來導航一個章節或頁面.

模板標籤
放在 APP/templatetags/APP_tags.py 檔案中
推薦的模板標籤文法
as (Context Var): This is used to set a variable in the context of the page
for (object or app.model): This is used to designate an object for an action to be taken on.
limit (num): This is used to limit a result to a certain number of results.
exclude (object or pk): The same as for, but is used to exclude things of that type.
測試
放在 APP/tests (.py 檔案或目錄) 中
Fixtures 放在 APP/fixtures/fixture.json 檔案中
通常只須重寫 Django 的 testcase
URLs
放在 APP/urls (.py 檔案或目錄) 中
需要設定 name 屬性以便能夠被反查; name 屬性設定成 APP_MODEL_VIEW 的格式, 比如 blog_post_detail 或 blog_post_list.
視圖
放在 APP/views (.py 檔案或目錄) 中
可以是任何可調用的 python 函數.
視圖參數應提供合理的預設值, 並易於定製:
範例:
def register(request, success_url=None,
         form_class=RegistrationForm
         template_name='registration/registration_form.html',
         extra_context=None):

<本節完>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.