Django Web 開發實例精解 Django 3 Web Development Cookbook, 4/e

[美]愛達斯·班德拉蒂斯 等著 張華臻 譯

  • Django Web 開發實例精解-preview-1
  • Django Web 開發實例精解-preview-2
  • Django Web 開發實例精解-preview-3
Django Web 開發實例精解-preview-1

買這商品的人也買了...

商品描述

《Django Web開發實例精解》詳細闡述了與Django相關的基本解決方案,主要包括模型和數據庫結構、表單和視圖、模板和JavaScript、自定義模板過濾器和標簽、模型管理、安全和性能、層次結構、導入和導出數據、測試、部署、維護等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。

目錄大綱

目    錄

第1章  Django 3.0開始之旅 1

1.1  簡介 1

1.2  技術需求 2

1.3  與虛擬環境協同工作 2

1.3.1  準備工作 2

1.3.2  實現方式 3

1.3.3  工作方式 3

1.3.4  延伸閱讀 3

1.4  創建一個項目文件結構 4

1.4.1  準備工作 4

1.4.2  實現方式 4

1.4.3  工作方式 6

1.4.4  更多內容 7

1.4.5  延伸閱讀 7

1.5  利用pip處理項目依賴項 8

1.5.1  準備工作 8

1.5.2  實現方式 8

1.5.3  工作方式 9

1.5.4  更多內容 10

1.5.5  延伸閱讀 10

1.6  針對開發、測試、預發布和產品環境,配置設置項 10

1.6.1  準備工作 10

1.6.2  實現方式 11

1.6.3  工作方式 12

1.6.4  延伸閱讀 12

1.7  在設置項中定義相對路徑 12

1.7.1  準備工作 13

1.7.2  實現方式 13

1.7.3  工作方式 13

1.7.4  延伸閱讀 14

1.8  處理敏感設置項 14

1.8.1  準備工作 14

1.8.2  實現方式 14

1.8.3  工作方式 15

1.8.4  更多內容 15

1.8.5  延伸閱讀 16

1.9  在項目中包含外部依賴項 16

1.9.1  準備工作 17

1.9.2  實現方式 17

1.9.3  工作方式 18

1.9.4  延伸閱讀 18

1.10  以動態方式設置STATIC_URL 19

1.10.1  準備工作 19

1.10.2  實現方式 19

1.10.3  工作方式 20

1.10.4  更多內容 20

1.10.5  延伸閱讀 22

1.11  將UTF-8設置為MySQL配置的默認編碼機制 22

1.11.1  準備工作 22

1.11.2  實現方式 22

1.11.3  工作方式 23

1.11.4  更多內容 23

1.11.5  延伸閱讀 23

1.12  創建Git忽略文件 23

1.12.1  準備工作 23

1.12.2  實現方式 23

1.12.3  工作方式 25

1.12.4  延伸閱讀 25

1.13  刪除Python編譯文件 25

1.13.1  準備工作 25

1.13.2  實現方式 26

1.13.3  工作方式 26

1.13.4  更多內容 26

1.13.5  延伸閱讀 26

1.14  遵循Python文件中的導入順序 26

1.14.1  準備工作 26

1.14.2  實現方式 27

1.14.3  工作方式 27

1.14.4  更多內容 27

1.14.5  延伸閱讀 28

1.15  創建應用程序配置 28

1.15.1  準備工作 28

1.15.2  實現方式 28

1.15.3  工作方式 29

1.15.4  更多內容 30

1.15.5  延伸閱讀 30

1.16  定義可覆寫的應用程序設置項 30

1.16.1  準備工作 31

1.16.2  實現方式 31

1.16.3  工作方式 33

1.16.4  延伸閱讀 33

1.17  針對Django、Gunicorn、Nginx和PostgreSQL,與Docker容器協同工作 33

1.17.1  準備工作 34

1.17.2  實現方式 34

1.17.3  工作方式 38

1.17.4  更多內容 41

1.17.5  延伸閱讀 41

第2章  模型和數據庫結構 43

2.1  簡介 43

2.2  技術需求 43

2.3  使用模型混入 44

2.3.1  準備工作 44

2.3.2  實現方式 44

2.3.3  工作方式 45

2.3.4  更多內容 45

2.3.5  延伸閱讀 46

2.4  利用與URL相關的方法創建一個模型混入 46

2.4.1  準備工作 47

2.4.2  實現方式 47

2.4.3  工作方式 48

2.4.4  延伸閱讀 49

2.5  創建一個模型混入以處理日期的創建和修改 50

2.5.1  準備工作 50

2.5.2  實現方式 50

2.5.3  工作方式 51

2.5.4  延伸閱讀 51

2.6  創建一個模型混入以關註元標簽 51

2.6.1  準備工作 52

2.6.2  實現方式 52

2.6.3  工作方式 54

2.6.4  延伸閱讀 54

2.7  創建一個模型混入以處理Generic Relation 54

2.7.1  準備工作 55

2.7.2  實現方式 55

2.7.3  工作方式 58

2.7.4  延伸閱讀 59

2.8  處理多語言字段 59

2.8.1  準備工作 59

2.8.2  實現方式 60

2.8.3  工作方式 64

2.8.4  延伸閱讀 65

2.9  與模型翻譯表協同工作 65

2.9.1  準備工作 66

2.9.2  實現方式 66

2.9.3  工作方式 69

2.9.4  延伸閱讀 70

2.10  避免環狀依賴項 71

2.10.1  準備工作 71

2.10.2  實現方式 71

2.10.3  延伸閱讀 73

2.11  添加數據庫約束 73

2.11.1  準備工作 73

2.11.2  實現方式 73

2.11.3  工作方式 74

2.11.4  更多內容 75

2.11.5  延伸閱讀 76

2.12  使用遷移 76

2.12.1  準備工作 77

2.12.2  實現方式 77

2.12.3  工作方式 78

2.12.4  更多內容 78

2.12.5  延伸閱讀 79

2.13  將外鍵修改為多對多字段 79

2.13.1  準備工作 79

2.13.2  實現方式 81

2.13.3  工作方式 83

2.13.4  更多內容 84

2.13.5  延伸閱讀 84

第3章  表單和視圖 85

3.1  簡介 85

3.2  技術需求 85

3.3  利用CRUDL函數創建一個應用程序 86

3.3.1  準備工作 86

3.3.2  實現方式 89

3.3.3  工作方式 92

3.3.4  更多內容 92

3.3.5  延伸閱讀 93

3.4  保存模型實例的作者 93

3.4.1  準備工作 93

3.4.2  實現方式 93

3.4.3  工作方式 94

3.4.4  延伸閱讀 95

3.5  上傳圖像 95

3.5.1  準備工作 95

3.5.2  實現方式 95

3.5.3  工作方式 98

3.5.4  延伸閱讀 99

3.6  利用自定義模板創建一個表單佈局 99

3.6.1  準備工作 99

3.6.2  實現方式 100

3.6.3  工作方式 103

3.6.4  延伸閱讀 105

3.7  利用django-crispy-forms創建一個表單佈局 105

3.7.1  準備工作 105

3.7.2  實現方式 106

3.7.3  工作方式 108

3.7.4  更多內容 109

3.7.5  延伸閱讀 110

3.8  與表單集協同工作 110

3.8.1  準備工作 110

3.8.2  實現方式 110

3.8.3  工作方式 118

3.8.4  更多內容 120

3.8.5  延伸閱讀 120

3.9  過濾對象列表 121

3.9.1  準備工作 121

3.9.2  實現方式 122

3.9.3  工作方式 127

3.9.4  延伸閱讀 127

3.10  管理分頁列表 128

3.10.1  準備工作 128

3.10.2  實現方式 128

3.10.3  工作方式 131

3.10.4  延伸閱讀 132

3.11  合成基於類的視圖 132

3.11.1  準備工作 132

3.11.2  實現方式 132

3.11.3  工作方式 134

3.11.4  更多內容 135

3.11.5  延伸閱讀 135

3.12  提供Open Graph和Twitter Card數據 135

3.12.1  準備工作 135

3.12.2  實現方式 135

3.12.3  工作方式 138

3.12.4  延伸閱讀 138

3.13  提供schema.org詞匯表 139

3.13.1  準備工作 139

3.13.2  實現方式 139

3.13.3  工作方式 141

3.13.4  延伸閱讀 141

3.14  生成PDF文檔 142

3.14.1  準備工作 142

3.14.2  實現方式 142

3.14.3  工作方式 146

3.14.4  延伸閱讀 147

3.15  利用Haystack和Whoosh實現多語言搜索 147

3.15.1  準備工作 147

3.15.2  實現方式 148

3.15.3  工作方式 153

3.15.4  延伸閱讀 154

3.16  利用Elasticsearch DSL實現多語言搜索 154

3.16.1  準備工作 154

3.16.2  實現方式 154

3.16.3  工作方式 162

3.16.4  延伸閱讀 163

第4章  模板和JavaScript 165

4.1  簡介 165

4.2  技術需求 165

4.3  安排base.html模板 166

4.3.1  準備工作 166

4.3.2  實現方式 166

4.3.3  工作方式 168

4.3.4  延伸閱讀 169

4.4  使用Django Sekizai 170

4.4.1  準備工作 170

4.4.2  實現方式 171

4.4.3  工作方式 172

4.4.4  延伸閱讀 172

4.5  公開JavaScript中的設置項 172

4.5.1  準備工作 172

4.5.2  實現方式 173

4.5.3  工作方式 175

4.5.4  延伸閱讀 176

4.6  使用HTML 5數據屬性 176

4.6.1  準備工作 176

4.6.2  實現方式 179

4.6.3  工作方式 185

4.6.4  延伸閱讀 187

4.7  提供響應式圖像 187

4.7.1  準備工作 187

4.7.2  實現方式 187

4.7.3  工作方式 190

4.7.4  更多內容 192

4.7.5  延伸閱讀 192

4.8  實現連續的滾動 192

4.8.1  準備工作 192

4.8.2  實現方式 193

4.8.3  工作方式 197

4.8.4  更多內容 199

4.8.5  延伸閱讀 199

4.9  在模式對話框中打開對象的細節信息 199

4.9.1  準備工作 200

4.9.2  實現方式 200

4.9.3  工作方式 203

4.9.4  延伸閱讀 204

4.10  實現Like微件 204

4.10.1  準備工作 205

4.10.2  實現方式 206

4.10.3  工作方式 210

4.10.4  延伸閱讀 212

4.11  通過Ajax上傳圖像 212

4.11.1  準備工作 212

4.11.2  實現方式 212

4.11.3  工作方式 221

4.11.4  更多內容 223

4.11.5  延伸閱讀 223

第5章  自定義模板過濾器和標簽 225

5.1  簡介 225

5.2  技術需求 225

5.3  遵循自定義的模板過濾器和標簽規則 226

5.4  創建一個模板過濾器以顯示帖子發布的天數 227

5.4.1  準備工作 227

5.4.2  實現方式 227

5.4.3  工作方式 228

5.4.4  更多內容 229

5.4.5  延伸閱讀 229

5.5  創建一個模板過濾器以析取第一個媒體對象 229

5.5.1  準備工作 229

5.5.2  實現方式 230

5.5.3  工作方式 230

5.5.4  更多內容 231

5.5.5  延伸閱讀 231

5.6  創建一個模板過濾器以識別URL 232

5.6.1  準備工作 232

5.6.2  實現方式 232

5.6.3  工作方式 233

5.6.4  延伸閱讀 233

5.7  創建一個模板標簽以包含一個模板 233

5.7.1  準備工作 233

5.7.2  實現方式 234

5.7.3  工作方式 235

5.7.4  更多內容 236

5.7.5  延伸閱讀 237

5.8  創建一個模板標簽以加載模板中的QuerySet 237

5.8.1  準備工作 237

5.8.2  實現方式 239

5.8.3  工作方式 241

5.8.4  延伸閱讀 242

5.9  創建一個模板標簽以作為模板解析內容 242

5.9.1  準備工作 242

5.9.2  實現方式 243

5.9.3  工作方式 244

5.9.4  延伸閱讀 245

5.10  創建模板標簽以調整請求查詢參數 245

5.10.1  準備工作 245

5.10.2  實現方式 246

5.10.3  工作方式 248

5.10.4  延伸閱讀 250

第6章  模型管理 251

6.1  簡介 251

6.2  技術需求 251

6.3  自定義修改列表頁面上的列 251

6.3.1  準備工作 252

6.3.2  實現方式 254

6.3.3  工作方式 255

6.3.4  延伸閱讀 257

6.4  創建可排序的內聯 257

6.4.1  準備工作 257

6.4.2  實現方式 258

6.4.3  工作方式 259

6.4.4  延伸閱讀 260

6.5  創建管理動作 261

6.5.1  準備工作 261

6.5.2  實現方式 261

6.5.3  工作方式 264

6.5.4  延伸閱讀 265

6.6  開發修改列表過濾器 265

6.6.1  準備工作 265

6.6.2  實現方式 265

6.6.3  工作方式 267

6.6.4  延伸閱讀 268

6.7  修改第三方應用程序的應用程序標記 268

6.7.1  準備工作 268

6.7.2  實現方式 269

6.7.3  工作方式 269

6.7.4  延伸閱讀 270

6.8  創建一個自定義賬戶應用程序 270

6.8.1  準備工作 270

6.8.2  實現方式 270

6.8.3  工作方式 274

6.8.4  延伸閱讀 276

6.9  獲取用戶頭像 277

6.9.1  準備工作 277

6.9.2  實現方式 277

6.9.3  更多內容 284

6.9.4  延伸閱讀 284

6.10  將一幅地圖插入至修改表單中 285

6.10.1  準備工作 285

6.10.2  實現方式 289

6.10.3  工作方式 297

6.10.4  延伸閱讀 300

第7章  安全和性能 301

7.1  簡介 301

7.2  技術需求 301

7.3  表單的跨站點請求偽造安全 302

7.3.1  準備工作 302

7.3.2  實現方式 302

7.3.3  工作方式 304

7.3.4  更多內容 304

7.3.5  延伸閱讀 305

7.4  基於內容安全政策的請求安全 306

7.4.1  準備工作 306

7.4.2  實現方式 306

7.4.3  工作方式 307

7.4.4  延伸閱讀 309

7.5  使用django-admin-honeypot 309

7.5.1  準備工作 310

7.5.2  實現方式 310

7.5.3  工作方式 310

7.5.4  更多內容 311

7.5.5  延伸閱讀 313

7.6  實現密碼驗證 313

7.6.1  準備工作 313

7.6.2  實現方式 313

7.6.3  工作方式 316

7.6.4  更多內容 317

7.6.5  延伸閱讀 317

7.7  下載授權文件 317

7.7.1  準備工作 317

7.7.2  實現方式 317

7.7.3  工作方式 320

7.7.4  延伸閱讀 320

7.8  向圖像中添加動態水印 321

7.8.1  準備工作 321

7.8.2  實現方式 321

7.8.3  工作方式 324

7.8.4  延伸閱讀 325

7.9  基於Auth0的身份驗證 325

7.9.1  準備工作 325

7.9.2  實現方式 326

7.9.3  工作方式 330

7.9.4  延伸閱讀 332

7.10  緩存方法的返回值 332

7.10.1  準備工作 332

7.10.2  實現方式 332

7.10.3  工作方式 333

7.10.4  更多內容 334

7.10.5  延伸閱讀 335

7.11  使用Memcached緩存Django視圖 335

7.11.1  準備工作 335

7.11.2  實現方式 336

7.11.3  工作方式 337

7.11.4  延伸閱讀 337

7.12  使用Redis緩存Django視圖 337

7.12.1  準備工作 338

7.12.2  實現方式 338

7.12.3  工作方式 339

7.12.4  更多內容 340

7.12.5  延伸閱讀 340

第8章  層次結構 341

8.1  簡介 341

8.2  技術需求 343

8.3  利用django-mptt創建層次分類 343

8.3.1  準備工作 343

8.3.2  實現方式 343

8.3.3  工作方式 345

8.3.4  延伸閱讀 346

8.4  利用django-mptt-admin創建分類管理界面 346

8.4.1  準備工作 347

8.4.2  實現方式 347

8.4.3  工作方式 348

8.4.4  延伸閱讀 349

8.5  利用django-mptt在模板中渲染分類 350

8.5.1  準備工作 351

8.5.2  實現方式 351

8.5.3  工作方式 352

8.5.4  更多內容 353

8.5.5  延伸閱讀 353

8.6  利用django-mptt和單選字段在表單中選擇分類 353

8.6.1  準備工作 353

8.6.2  實現方式 354

8.6.3  工作方式 355

8.6.4  延伸閱讀 356

8.7  利用django-mptt在表單中通過復選框列表選擇多個分類 356

8.7.1  準備工作 357

8.7.2  實現方式 357

8.7.3  工作方式 362

8.7.4  延伸閱讀 363

8.8  利用django-treebeard創建層次分類 363

8.8.1  準備工作 364

8.8.2  實現方式 364

8.8.3  工作方式 365

8.8.4  更多內容 366

8.8.5  延伸閱讀 367

8.9  利用django-treebeard創建分類管理界面 367

8.9.1  準備工作 367

8.9.2  實現方式 367

8.9.3  工作方式 368

8.9.4  延伸閱讀 370

第9章  導入和導出數據 371

9.1  簡介 371

9.2  技術需求 371

9.3  從本地CSV文件中導入數據 371

9.3.1  準備工作 372

9.3.2  實現方式 374

9.3.3  工作方式 376

9.3.4  延伸閱讀 377

9.4  從本地Excel文件中導入數據 378

9.4.1  準備工作 378

9.4.2  實現方式 378

9.4.3  工作方式 380

9.4.4  延伸閱讀 381

9.5  從外部JSON文件中導入數據 381

9.5.1  準備工作 382

9.5.2  實現方式 384

9.5.3  工作方式 387

9.5.4  延伸閱讀 388

9.6  從外部XML文件中導入數據 388

9.6.1  準備工作 388

9.6.2  實現方式 389

9.6.3  工作方式 392

9.6.4  更多內容 393

9.6.5  延伸閱讀 393

9.7  針對搜索引擎準備分頁網站地圖 394

9.7.1  準備工作 394

9.7.2  實現方式 396

9.7.3  工作方式 397

9.7.4  更多內容 398

9.7.5  延伸閱讀 398

9.8  創建可過濾的RSS訂閱 398

9.8.1  準備工作 398

9.8.2  實現方式 401

9.8.3  工作方式 404

9.8.4  延伸閱讀 404

9.9  使用Django REST框架創建一個API 404

9.9.1  準備工作 404

9.9.2  實現方式 405

9.9.3  工作方式 406

9.9.4  延伸閱讀 410

第10章  其他內容 411

10.1  簡介 411

10.2  技術需求 411

10.3  使用Django shell 412

10.3.1  準備工作 412

10.3.2  實現方式 412

10.3.3  工作方式 416

10.3.4  延伸閱讀 416

10.4  使用數據庫查詢表達式 416

10.4.1  準備工作 416

10.4.2  實現方式 418

10.4.3  工作方式 421

10.4.4  延伸閱讀 423

10.5  slugify()函數的猴子補丁以獲得更好的國際支持 423

10.5.1  準備工作 423

10.5.2  實現方式 424

10.5.3  更多內容 424

10.5.4  延伸閱讀 425

10.6  切換調試工具欄 425

10.6.1  準備工作 425

10.6.2  實現方式 426

10.6.3  工作方式 428

10.6.4  延伸閱讀 429

10.7  使用ThreadLocalMiddleware 429

10.7.1  準備工作 430

10.7.2  實現方式 430

10.7.3  工作方式 431

10.7.4  延伸閱讀 432

10.8  使用信號通知管理員有關新的條目 432

10.8.1  準備工作 432

10.8.2  實現方式 433

10.8.3  工作方式 434

10.8.4  延伸閱讀 435

10.9  檢查缺失設置項 435

10.9.1  準備工作 435

10.9.2  實現方式 435

10.9.3  工作方式 437

10.9.4  延伸閱讀 438

第11章  測試 439

11.1  簡介 439

11.2  需求條件 439

11.3  利用Mock測試視圖 440

11.3.1  準備工作 440

11.3.2  實現方式 440

11.3.3  工作方式 442

11.3.4  更多內容 443

11.3.5  延伸閱讀 443

11.4  利用Selenium測試用戶界面 443

11.4.1  準備工作 444

11.4.2  實現方式 444

11.4.3  工作方式 448

11.4.4  延伸閱讀 449

11.5  利用Django REST框架測試API 449

11.5.1  準備工作 449

11.5.2  實現方式 449

11.5.3  工作方式 454

11.5.4  延伸閱讀 454

11.6  確保測試覆蓋率 455

11.6.1  準備工作 455

11.6.2  實現方式 455

11.6.3  工作方式 457

11.6.4  延伸閱讀 457

第12章  部署 459

12.1  簡介 459

12.2  技術需求 460

12.3  發布可復用的Django應用程序 460

12.3.1  準備工作 460

12.3.2  實現方式 460

12.3.3  工作方式 464

12.3.4  延伸閱讀 464

12.4  針對預發布環境利用mod_wsgi在Apache上部署 464

12.4.1  準備工作 464

12.4.2  實現方式 465

12.4.3  工作方式 473

12.4.4  延伸閱讀 475

12.5  針對產品環境利用mod_wsgi在Apache上部署 475

12.5.1  準備工作 475

12.5.2  實現方式 476

12.5.3  工作方式 480

12.5.4  延伸閱讀 481

12.6  針對預發布環境在Nginx和Gunicorn上部署 481

12.6.1  準備工作 481

12.6.2  實現方式 482

12.6.3  工作方式 490

12.6.4  延伸閱讀 492

12.7  針對產品環境在Nginx和Gunicorn上部署 492

12.7.1  準備工作 492

12.7.2  實現方式 493

12.7.3  工作方式 496

12.7.4  延伸閱讀 497

第13章  維護 499

13.1  簡介 499

13.2  技術需求 499

13.3  創建和恢復MySQL數據庫備份 499

13.3.1  準備工作 500

13.3.2  實現方式 500

13.3.3  工作方式 503

13.3.4  延伸閱讀 504

13.4  創建和恢復PostgreSQL數據庫備份 504

13.4.1  準備工作 504

13.4.2  實現方式 504

13.4.3  工作方式 507

13.4.4  延伸閱讀 509

13.5  設置常規作業的定時任務 509

13.5.1  準備工作 509

13.5.2  實現方式 509

13.5.3  工作方式 511

13.5.4  更多內容 512

13.5.5  延伸閱讀 512

13.6  日誌事件 512

13.6.1  準備工作 513

13.6.2  實現方式 513

13.6.3  工作方式 516

13.6.4  延伸閱讀 517

13.7  通過電子郵件獲取詳細的錯誤報告 517

13.7.1  準備工作 517

13.7.2  實現方式 518

13.7.3  更多內容 519

13.7.4  延伸閱讀 520