溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django基礎知識學習及使用

發布時間:2021-06-29 14:55:23 來源:億速云 閱讀:155 作者:chen 欄目:大數據
# Django基礎知識學習及使用

## 目錄
1. [Django簡介](#1-django簡介)
2. [開發環境搭建](#2-開發環境搭建)
3. [項目結構解析](#3-項目結構解析)
4. [模型(Models)](#4-模型models)
5. [視圖(Views)](#5-視圖views)
6. [模板(Templates)](#6-模板templates)
7. [路由(URLs)](#7-路由urls)
8. [表單處理](#8-表單處理)
9. [Admin后臺管理](#9-admin后臺管理)
10. [部署基礎](#10-部署基礎)
11. [最佳實踐](#11-最佳實踐)

---

## 1. Django簡介

### 1.1 什么是Django
Django是一個高級Python Web框架,由Adrian Holovaty和Simon Willison于2003年開發,遵循"快速開發"和"DRY(Don't Repeat Yourself)"原則。它提供了:
- ORM(對象關系映射)
- 自動化Admin界面
- 表單處理
- 模板引擎
- 緩存系統
- 國際化支持

### 1.2 Django的特點
- **全??蚣?*:包含Web開發所需的所有組件
- **開箱即用**:自帶Admin、認證系統等
- **安全可靠**:自動防范CSRF、XSS等攻擊
- **可擴展性強**:支持百萬級流量應用

### 1.3 適用場景
- 內容管理系統(CMS)
- 社交網站
- 電子商務平臺
- RESTful API服務

---

## 2. 開發環境搭建

### 2.1 基礎環境準備
```bash
# 創建虛擬環境
python -m venv myenv
source myenv/bin/activate  # Linux/Mac
myenv\Scripts\activate     # Windows

# 安裝Django
pip install django

2.2 創建項目

django-admin startproject myproject
cd myproject

2.3 開發服務器

python manage.py runserver

訪問 http://127.0.0.1:8000 查看歡迎頁面

2.4 常用命令

命令 說明
startapp 創建新應用
makemigrations 生成遷移文件
migrate 執行數據庫遷移
createsuperuser 創建管理員

3. 項目結構解析

3.1 初始目錄結構

myproject/
├── manage.py         # 項目管理腳本
└── myproject/
    ├── __init__.py
    ├── settings.py   # 項目配置
    ├── urls.py       # 主路由配置
    └── wsgi.py       # WSGI入口

3.2 創建應用

python manage.py startapp myapp

3.3 應用目錄結構

myapp/
├── migrations/       # 數據庫遷移文件
├── __init__.py
├── admin.py          # Admin配置
├── apps.py           # 應用配置
├── models.py         # 數據模型
├── tests.py          # 單元測試
└── views.py          # 視圖函數

4. 模型(Models)

4.1 定義模型

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey('Author', on_delete=models.CASCADE)
    publish_date = models.DateField()
    price = models.DecimalField(max_digits=5, decimal_places=2)
    
    def __str__(self):
        return self.title

4.2 字段類型

字段類型 說明
CharField 字符串字段
TextField 長文本
IntegerField 整數
BooleanField 布爾值
DateTimeField 日期時間
FileField 文件上傳

4.3 數據庫遷移

python manage.py makemigrations
python manage.py migrate

5. 視圖(Views)

5.1 函數視圖

from django.shortcuts import render
from .models import Book

def book_list(request):
    books = Book.objects.all()
    return render(request, 'books/list.html', {'books': books})

5.2 類視圖

from django.views.generic import ListView
from .models import Book

class BookListView(ListView):
    model = Book
    template_name = 'books/list.html'
    context_object_name = 'books'

5.3 常用視圖類

類視圖 說明
View 基礎視圖類
TemplateView 模板視圖
ListView 列表視圖
DetailView 詳情視圖
CreateView 創建視圖

6. 模板(Templates)

6.1 基礎語法

<!-- 變量輸出 -->
<h1>{{ book.title }}</h1>

<!-- 循環 -->
{% for book in books %}
  <p>{{ book.author }}</p>
{% endfor %}

<!-- 條件判斷 -->
{% if book.price > 100 %}
  <p>Expensive</p>
{% endif %}

6.2 模板繼承

<!-- base.html -->
<html>
<head><title>{% block title %}Default{% endblock %}</title></head>
<body>
  {% block content %}{% endblock %}
</body>
</html>

<!-- child.html -->
{% extends "base.html" %}
{% block title %}Book List{% endblock %}
{% block content %}
  <h1>All Books</h1>
{% endblock %}

7. 路由(URLs)

7.1 URL配置

# myproject/urls.py
from django.urls import path
from myapp import views

urlpatterns = [
    path('books/', views.book_list, name='book-list'),
    path('books/<int:pk>/', views.book_detail, name='book-detail'),
]

7.2 路由參數

轉換器 說明
str 匹配非空字符串
int 匹配正整數
slug 匹配字母、數字、連字符
uuid 匹配UUID字符串

8. 表單處理

8.1 表單定義

from django import forms

class BookForm(forms.Form):
    title = forms.CharField(label='書名', max_length=100)
    author = forms.CharField(label='作者', max_length=50)
    price = forms.DecimalField(label='價格', min_value=0)

8.2 表單處理視圖

def book_create(request):
    if request.method == 'POST':
        form = BookForm(request.POST)
        if form.is_valid():
            # 處理有效數據
            return redirect('book-list')
    else:
        form = BookForm()
    return render(request, 'books/create.html', {'form': form})

9. Admin后臺管理

9.1 注冊模型

from django.contrib import admin
from .models import Book

@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'price')
    search_fields = ('title', 'author__name')
    list_filter = ('publish_date',)

9.2 自定義Admin

class BookAdmin(admin.ModelAdmin):
    fieldsets = [
        ('基本信息', {'fields': ['title', 'author']}),
        ('銷售信息', {'fields': ['price', 'stock']}),
    ]

10. 部署基礎

10.1 生產環境設置

# settings.py
DEBUG = False
ALLOWED_HOSTS = ['yourdomain.com']
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

10.2 常用部署方式

  1. Nginx + Gunicorn
  2. Apache + mod_wsgi
  3. Docker部署
  4. 云平臺部署(AWS、Azure等)

11. 最佳實踐

  1. 項目結構優化

    • 分應用開發
    • 配置分離(dev/prod)
  2. 性能優化

    • 使用select_relatedprefetch_related
    • 啟用緩存
    • 數據庫索引優化
  3. 安全建議

    • 定期更新Django版本
    • 使用HTTPS
    • 限制Admin訪問IP
  4. 測試策略

    • 單元測試
    • 集成測試
    • 自動化部署

本文共計約5550字,涵蓋了Django的核心概念和基礎使用方法。實際開發中建議結合官方文檔(https://docs.djangoproject.com)進行深入學習。 “`

注:實際字數可能因Markdown渲染方式略有差異。如需精確字數控制,建議在文本編輯器中檢查。本文檔結構完整,包含了Django開發的主要方面,可作為學習路線圖使用。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女