Django 入門學習(一)

Django 簡單教程

閱讀前注意

須要瞭解 Python 的基礎html

背景

官方github: github.com/django/djan…python

Django是一個開放源代碼的Web應用框架,由Python寫成。git

Django遵照BSD版權,初次發佈於2005年7月, 並於2008年9月發佈了第一個正式版本1.0 。github

Django採用了MVC的軟件設計模式,即模型M,視圖V和控制器C。正則表達式

安裝

windows

一、Python 下載地址:www.python.org/downloads/django

二、Django 下載地址:www.djangoproject.com/download/windows

詳細環境配置請 Google設計模式

Mac安裝

  • 安裝 python,會自動安裝 pip瀏覽器

    brew install -v python\@2
    複製代碼
  • 安裝 Djangobash

    sudo pip install Django
    複製代碼
  • 查看安裝版本號

    django-admin.py --version
    複製代碼

來一個helloword

[注意] 這裏的 django 的版本是1.6.11

  • 建立

    django-admin.py startproject HelloWorld
    複製代碼
  • 運行

    cd HelloWorld
    python manage.py runserver
    複製代碼
  • 目錄介紹

    HelloWorld               // 根目錄
    ├─manage.py              //一個實用的命令行工具,可以讓你以各類方式與該 Django 項目進行交互。
    ├─HelloWorld						 //項目的容器。
    |     ├─__init__.py			 //一個空文件,告訴 Python 該目錄是一個 Python 包。
    |     ├─settings.py      //該 Django 項目的設置/配置
    |     ├─urls.py					 //該 Django 項目的 URL 聲明; 一份由 Django 驅動的網站"目錄"。
    |     ├─wsgi.py					 //一個 WSGI 兼容的 Web 服務器的入口,以便運行你的項目。
    複製代碼

視圖和 URL 配置

  • 在先前建立的 HelloWorld 目錄下的 HelloWorld 目錄新建一個 views.py 文件,並輸入代碼:

    from django.http import HttpResponse
     
    def hello(request):
        return HttpResponse("Hello world ! ")
    複製代碼
  • 編輯 urls.py

    from django.conf.urls import patterns, include, url
    from . import views
    # from django.contib import admin
    
    # admin.autodiscover()
    
    urlpatterns = patterns(
        '',
        # Examples:
        # url(r'^$', 'HelloWorld.views.home', name='home'),
        # url(r'^blog/', include('blog.urls')),
    
        # url(r'^admin/', include(admin.site.urls)),
        url('hello/?$', views.hello),
    )
    
    
    複製代碼
  • 瀏覽器打開 http://127.0.0.1:8000/hello

path() 函數

Django path() 能夠接收四個參數,分別是兩個必選參數:route、view 和兩個可選參數:kwargs、name。

語法格式:

path(route, view, kwargs=None, name=None)
複製代碼
  • route: 字符串,表示 URL 規則,與之匹配的 URL 會執行對應的第二個參數 view。
  • view: 用於執行與正則表達式匹配的 URL 請求。
  • kwargs: 視圖使用的字典類型的參數。
  • name: 用來反向獲取 URL。

url(路由) 函數

語法格式:

from django.conf.urls import url

urlpatterns = [
     url(正則表達式, views視圖,參數,別名),
]
複製代碼
  • 正則表達式:一個正則表達式字符串

  • views視圖: 一個可調用對象,一般爲一個視圖函數

  • 參數 : 可選的要傳給視圖函數的默認參數(字典形式)

  • 別名: 一個可選的name參數

Django 模板

在 HelloWorld 根目錄底下建立 templates 目錄並創建 hello.html 文件

  • 編輯hello.html, 變量使用雙括號

    <h1>{{ hello }}</h1>
    複製代碼
  • 接下來咱們須要向Django說明模板文件的路徑,修改HelloWorld/settings.py,修改 TEMPLATES 中的 DIRS 爲 [BASE_DIR+"/templates",],以下所示:

    TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]
    複製代碼
  • 目錄結構以下

    HelloWorld
    ├─manage.py
    ├─templates
    |     └hello.html
    ├─HelloWorld
    |     ├─__init__.py
    |     ├─__init__.pyc
    |     ├─settings.py
    |     ├─settings.pyc
    |     ├─urls.py
    |     ├─urls.pyc
    |     ├─views.py
    |     ├─views.pyc
    |     ├─wsgi.py
    |     └wsgi.pyc
    複製代碼

Django 模板標籤

if/else 標籤
  • 基本語法格式以下:
{% if condition1 %}
   ... display 1
{% elif condition2 %}
   ... display 2
{% else %}
   ... display 3
{% endif %}
複製代碼
  • 根據條件判斷是否輸出。if/else 支持嵌套。

{% if %} 標籤接受 and , or 或者 not 關鍵字來對多個變量作判斷 ,或者對變量取反( not ),例如:

{% if athlete_list and coach_list %}
     athletes 和 coaches 變量都是可用的。
{% endif %}
複製代碼
for 標籤

{% for %} 容許咱們在一個序列上迭代。

{% for athlete in athlete_list %}
    <h1>{{ athlete.name }}</h1>
    <ul>
    {% for sport in athlete.sports_played %}
        <li>{{ sport }}</li>
    {% endfor %}
    </ul>
{% endfor %}
複製代碼
ifequal/ifnotequal 標籤

{% ifequal %} 標籤比較兩個值,當他們相等時,顯示在 {% ifequal %} 和 {% endifequal %} 之中全部的值。

{% ifequal section 'sitenews' %}
    <h1>Site News</h1>
{% else %}
    <h1>No News Here</h1>
{% endifequal %}
複製代碼
註釋標籤
{# 這是一個註釋 #}
複製代碼
過濾器

模板過濾器能夠在變量被顯示前修改它,過濾器使用管道字符,以下所示:

{{ name|lower }}
複製代碼
include 標籤

{% include %} 標籤容許在模板中包含其它的模板的內容。

{% include "nav.html" %}
複製代碼

模板繼承

模板能夠用繼承的方式來實現複用。

<!DOCTYPE html>
<html>
  <head>
    <title>ddddddd</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    <p>Django 測試。</p>
    {% block mainbody %}
    <p>original</p>
    {% endblock %}
  </body>
</html>

複製代碼

咱們能夠在 hello.html 進行繼承

{%extends "base.html" %}
<h1>{{ hello }}</h1>
{% block mainbody %}
<h6>繼承了 base.html 文件</h6>
{% endblock %}

複製代碼

最後的目錄結構

HelloWorld
├─manage.py
├─templates
|     ├─base.html
|     └hello.html
├─HelloWorld
|     ├─__init__.py
|     ├─__init__.pyc
|     ├─settings.py
|     ├─settings.pyc
|     ├─urls.py
|     ├─urls.pyc
|     ├─views.py
|     ├─views.pyc
|     ├─wsgi.py
|     └wsgi.pyc
複製代碼
相關文章
相關標籤/搜索