目錄html
Django 框架簡介前端
# 法一: pip install Django==1.10.2 # 版本號 # 法二: git clone https://github.com/django/django.git # 最新開發版 # 法三: 官網右側下載 tar.gz 包
# 法一: python -m django --version # 獲得版本號 # 法二: python3 >>> import django # 不報錯
django-admin startproject myblog # 不報錯就建立成功了
< 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'), ] # 靜態文件地址
# 法一: # 進入項目中 manage.py 同級目錄: python manage.py startapp blog # 應用名不容許與系統的模塊名相同 添加應用名到 settings.py 中的 INSTALLED_APPS 裏面 # 法二: # pycharm: 工具 --> "Run manage.py Task" (option + R) --> python manage.py startapp blog
migrations/ # 數據遷移模塊 admin.py # 後臺管理系統配置 apps.py # 應用的配置 models.py # 數據模塊,使用ORM框架,相似MVC結構中的模型Models test.py # 自動化測試模塊 # Django 提供了自動化測試功能,在這裏面編寫測試腳本、語句 vews.py # 執行相應的代碼所在模塊 # 代碼邏輯處理的主要文件 # 項目中大部分代碼都在這裏編寫
< 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), ]
python3 manage.py runserver
模板引擎:修改 settings.py 中 TEMPLATES 參數中 BACKEND 參數python
在 views.py 中返回render()git
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)
python manage.py makemigrations <app>
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
python manage.py sqlmigrate <app> <文件id>
# BEGIN; # -- # -- Create model Article # -- # CREATE TABLE "blog_article" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "title" varchar(32) NOT NULL, "content" text NULL); # COMMIT;
python manage.py createsuperyuser Username: admin Email: Password: Password(again): # 密碼8個字符以上
localhost:8000/admin
< settings.py > LANGUAGE_CODE = 'zh-hans'
配置應用
在 app 下 admin.py 中引入 app 的 models 模塊
編輯 admin.py
admin.site.register(models.Article)