Django 框架簡介

Django 框架簡介前端

1.下載&安裝

# 法一:
pip install Django==1.10.2 # 版本號

# 法二:
git clone https://github.com/django/django.git # 最新開發版

# 法三:
官網右側下載 tar.gz 包

1.2.驗證是否安裝

# 法一:
python -m django --version   # 獲得版本號

# 法二:
python3
>>> import django   # 不報錯

2.建立項目

django-admin startproject myblog   # 不報錯就建立成功了

2.1.項目目錄、文件說明

  • 項目根目錄:
< manage.py 文件 >
    # 項目管理器,與項目進行交互的命令行工具集的入口

python manage.py --help   # 有不少子命令
python manage.py runserver 9999   # 啓動服務,指定端口端口爲 9999,不指定端口時默認爲 8000

< myblog 目錄 >
    # 項目的一個容器
    # 包含項目最基本的一些配置

< wsgi.py >
    # WSGI(Python Web Server Gateway Interface)
  # Python 服務器網管接口
  # Python 應用與 Web 服務器之間的接口

< urls.py >
    # URL 配置文件
  # Django 項目中全部地址(頁面)都須要咱們本身去配置其 URL

< settings.py >
  # 項目的總配置文件
  # 裏面包含了數據庫、Web應用、時間等各類配置
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  # 整個項目的根目錄
SECRET_KEY = 'hfusaf2m4ot#7)fkw#di2bu6(cv0@opwmafx5n#6=3d%x^hpl6'
  # 安全碼,防止跨站腳本攻擊,建立項目時 Django 自動生成
DEBUG = False
  # 生產中不要打開,由於錯誤信息會直接拋給前端用戶,不友好
ALLOWED_HOSTS = ['*']
  # 容許訪問的客戶端IP
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
        'django_q',
        'sql',
        'themis',
        'common',
        )
          # 咱們寫的程序都要寫進來
MIDDLEWARE = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'common.middleware.check_login_middleware.CheckLoginMiddleware',
    'common.middleware.exception_logging_middleware.ExceptionLoggingMiddleware',
    )
       # 中間件
ROOT_URLCONF = 'archery.urls'
      # URL 配置根文件
TEMPLATES = [
    {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'common/templates')],
    'APP_DIRS': True,
    'OPTIONS': {
    'context_processors': [
    'django.template.context_processors.debug',
    'django.template.context_processors.request',
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
    'common.utils.global_info.global_info',
            ],
        },
    },
]
        # 模板配置
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_TZ = False
       # 國際化相關
AUTH_PASSWORD_VALIDATORS = [
    {
    'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
    'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    'OPTIONS': {
    'min_length': 9,
    }
    },
    {
    'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
    'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]
       # 密碼認證相關
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'common/static'), ]
       # 靜態文件地址

3.建立應用

# 法一:
    # 進入項目中 manage.py 同級目錄:
python manage.py startapp blog

# 應用名不容許與系統的模塊名相同
添加應用名到 settings.py 中的 INSTALLED_APPS 裏面

# 法二:
# pycharm:
工具 --> "Run manage.py Task" (option + R) --> python manage.py startapp blog

3.1.應用目錄

migrations/
  # 數據遷移模塊
admin.py
  # 後臺管理系統配置
apps.py
  # 應用的配置
models.py
  # 數據模塊,使用ORM框架,相似MVC結構中的模型Models
test.py
  # 自動化測試模塊
  # Django 提供了自動化測試功能,在這裏面編寫測試腳本、語句
vews.py
  # 執行相應的代碼所在模塊
  # 代碼邏輯處理的主要文件
  # 項目中大部分代碼都在這裏編寫

4.測試——第一個示例

4.1.建立響應

< views.py >

from django.shortcuts import render
    # 引入請求響應包
from django.http import HttpResponse
  # Create your views here.
  # Django 中每個請求都由一個函數處理,參數默認約定 response
def index(response):
  return HttpResponse('Hello World!')
< urls.py >
  # 每一個 URL 都以 url 的形式寫出來
  # url 函數放在 urlpatterns 列表中
  # url 函數三個參數:URL,對應方法,名稱

# 法一:
from django.contrib import admin
from django.urls import path
from blog import views # 新增

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index), # 新增
]

# 法二:
  # 在根 urls.py 中引入 include
  # 在 app 目錄下建立 urls.py,格式與根 urls.py 格式相同
  # 根 urls.py 中 url 函數第2個參數改成 include('blog.urls')
  # 要注意兩個 urls.py 中的 URL 參數,若是都有的話,訪問須要兩級 URL\URL\
< urls.py >

from django.contrib import admin
from django.urls import path, include # 新增 include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', include('blog.urls')),
]
< blog/urls.py >

from django.urls import path, include
from blog import views

urlpatterns = [
    path('', views.index),
]

4.2.啓動

python3 manage.py runserver
  • 訪問 http://127.0.0.1:8000/index

5.Templates 目錄說明

  • 就是 HTML 文件
  • 使用了 Django 模板語言(Django Template Language, DTL)
  • 可使用第三方模板(如 Jinja2)
  • 模板引擎:修改 settings.py 中 TEMPLATES 參數中 BACKEND 參數python

  • 建立 template
  • app 目錄下建立 templates 目錄
  • 在該目錄下建立 html 文件
  • 在 views.py 中返回render()git

  • DTL
    • render() 中支持 dict 參數
    • dict 參數是後臺傳遞到模板的參數,key 爲參數名
    • 模板中使用 {{ 參數名 }}

5.1.templates HTML衝突問題

  • Django 按照 INSTALLED_APPS 中添加順序查找 templates
    • 不一樣 app 下 templates 目錄中的 同名.html 文件會形成衝突
  • 解決
    • 在 app 的 templates 目錄下建立以 app 名爲名稱的目錄
    • 將 html 文件放入新建立的目錄下

6.Models 目錄說明

  • Django 中的 Models 是什麼?
    • 一般,一個Model 對應數據庫的一張表
    • Django 中 Models 以 class 的形式表現
    • 它包含了一些基本字段以及數據的一些行爲
  • ORMgithub

    • 對象關係映射(Object Relation Mapping)sql

    • 實現了對象和數據庫之間的映射數據庫

    • 隱藏了數據訪問的細節,不須要編寫SQL語句django

  • 編寫 Models安全

    • 在應用根目錄下建立 models.py,並引入 models 模塊bash

    • 建立 class,繼承 models.Model,該類就是一張數據表

    • 在 class 中建立字段

  • 字段建立
    • 字段即類裏面的屬性(變量)
class Article(models.Model):
    title = models.CharField(max_length=32, default='title')
    content = models.TextField(null=True)
  • 生成數據表
    • 命令行進入 manage.py 同級目錄
python manage.py makemigrations <app>
  • 會生成一個py文件,而且建立 model
blog/migrations/0001_initial.py
- Create model Article
python manage.py migrate <app>
  • 真正執行插入操做
# Tracking file by folder pattern: migrations
# Operations to perform:
# Apply all migrations: blog
# Running migrations:
# Applying blog.0001_initial... OK
  • 查看 SQL語句
    • Django 會自動在 /migrations/ 目錄下生產一直文件
python manage.py sqlmigrate <app> <文件id>
  • 默認 sqlite3 數據庫在項目根目錄下的 db.sqlite3
# BEGIN;
 # --
 # -- Create model Article
 # --
 # CREATE TABLE "blog_article" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "title" varchar(32) NOT NULL, "content" text NULL);
 # COMMIT;

7.查看、編輯 db.sqlite3

  • 第三方輕量、免費軟件 SQLite Expert Personal

8.admin

8.1.什麼是 admin

  • admin 是 Django 自帶的一個功能強大的自動化數據管理潔面
  • 被受權的用戶可直接在 admin 中管理數據庫
  • Django 提供了許多針對 admin 的定製功能

8.2.配置admin

  • 建立用戶
python manage.py createsuperyuser
  Username: admin
  Email: 
  Password: 
  Password(again): # 密碼8個字符以上
  • admin 入口
localhost:8000/admin
  • 調整admin語言爲中文
< settings.py >
LANGUAGE_CODE = 'zh-hans'
  • 配置應用

    • 在 app 下 admin.py 中引入 app 的 models 模塊

    • 編輯 admin.py

      admin.site.register(models.Article)
相關文章
相關標籤/搜索