一個超級小的 Django 項目.

一個超級小的 Django 項目.

Posted November 12, 2018

Django 可以支持類似於Flask 一樣的單文件項目.

當用最簡單的代碼實現 Django 項目爲最基本的要素的時候, 項目可以和微框架一樣小.

但我建議, 最好不要這樣做, 因爲在選擇使用 Django 的時候, 我比較看重的 Django 封裝的一系列模塊, 我更建議用 Django 官方提供的架構去開始我的工程。

Introduction

首先我們知道, 在我們安裝 Django 之後, Django 和其他 Python 包一樣, 在site-packages裏面, 這意味着 Django 和其他的 Python 包一樣(Requests, Pillow, NumPy).

驗證 Django 是否安裝最簡單的方法是到交互式界面導入它

Python

>>> import django
>>> print(django.get_version())
1.11.4

但是我們使用 Django 和使用其他包不一樣, 在官方推薦的例子下, 我們開始一個項目首先執行的是startproject

我們執行後, 會初始化創建默認的項目目錄結構:

  • manage.py
  • settings.py
  • urls.py
  • wsgi.py

這就是常用的預配置

加入我們要做一個 web 項目, 你可能需要數據庫, 處理用戶的身份驗證, 和會話等功能。 startproject會讓我們對這些的處理和配置更加輕鬆. 而且 Django 默認就提供這些功能, 這讓我們能夠直接引用.

但這樣不是開始項目的唯一方式, 這也是本章的目的。

最小的 Django 程序

app.py

Python

import sys

from django.conf import settings
from django.conf.urls import url
from django.core.management import execute_from_command_line
from django.http import HttpResponse

settings.configure(
    DEBUG=True,
    SECRET_KEY='A-random-secret-key!',
    ROOT_URLCONF=sys.modules[__name__],
)


def index(request):
    return HttpResponse('<h1>A minimal Django response!</h1>')

urlpatterns = [
    url(r'^$', index),
]

if __name__ == '__main__':
    execute_from_command_line(sys.argv)

SECRET_KEY是我們必須要提供的一個參數, DEBUG默認是 False, 沒有開啓 DEBUG 的情況需要定義ALLOWED_HOSTS配置, 所以我們直接覆蓋 DEBUG 爲 True. ROOT_URLCONF 是需要包含 URL 列表的特殊模塊路徑. 其實就是我們項目的urls.py文件. 在這裏我們寫到一個文件裏面了, 所以我們直接定義sys.modules[__name__]表示當前模塊, 並在當前文件下面定義urlpatterns列表, 定義的方式和urls.py一樣和視圖view對應起來.

然後通過execute_from_command_line快捷方式啓動, 這個保留了 manage.py 命令的功能.

使用

由於沒有其他的APP 在 INSTALLED_APPS裏面, 默認情況下只有 django 項目. 所以只有一些最基本的命令功能.

Bash

$ python app.py

Type 'app.py help <subcommand>' for help on a specific subcommand.

Available subcommands:

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    runserver
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver

啓動

我們使用 runserver 把程序啓動

Bash

$ python app.py runserver
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章