Django教程:從入門到實戰

Django是一個高級的Python Web框架,採用了MTV的設計模式。MTV表示Model-Template-View,是Django框架中的三個核心部分。

一、Django入門

1、安裝Django

使用pip安裝最新版的Django:

pip install django

2、創建Django項目

使用以下命令創建一個新的Django項目:

django-admin startproject myproject

這將創建一個名為myproject的目錄,其中包含Django的常規文件結構。

3、運行Django項目

進入myproject目錄,運行以下命令啟動服務器:

cd myproject
python manage.py runserver

瀏覽器訪問http://127.0.0.1:8000/即可看到Django的歡迎頁面。

二、Django模型

1、定義模型

在Django中定義模型,需要在應用程序的models.py文件中創建一個類,該類繼承自django.db.models.Model。

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

2、同步數據庫

運行以下命令同步數據庫:

python manage.py makemigrations
python manage.py migrate

3、使用模型

可以通過以下方式使用模型:

from myapp.models import Book

book = Book(title='Django入門教程', author='張三', pub_date=datetime.now())
book.save()

三、Django視圖

1、定義視圖

Django視圖是一個Python函數,它負責處理Web請求並返迴響應。以下是定義視圖的示例:

from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello Django!")

2、配置URL

在Django中,每個URL必須映射到一個視圖函數。可以通過創建app的urls.py文件並在主urls.py文件中引入來定義URL。

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^hello/$', views.hello, name='hello'),
]

3、訪問視圖

在瀏覽器中訪問定義的URL即可調用視圖函數並返迴響應結果。

四、Django模板

1、創建模板

Django模板通常採用HTML和CSS來創建,可以放在應用的templates目錄中。以下是一個簡單的HTML模板示例:

<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ title }}</h1>
    <p>{{ content }}</p>
</body>
</html>

2、使用模板

在視圖函數中,可以通過以下方式使用模板:

from django.shortcuts import render

def my_view(request):
    context = {'title': '我的視圖', 'content': '歡迎來到我的世界!'}
    return render(request, 'my_template.html', context)

3、渲染模板

在模板渲染時,指定上下文。以下是在模板中渲染上下文的示例:

<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ title }}</h1>
    <p>{{ content }}</p>
    <p>{{ some_variable }}</p>
</body>
</html>

在視圖函數中,傳遞上下文:

from django.shortcuts import render

def my_view(request):
    context = {'title': '我的視圖', 'content': '歡迎來到我的世界!', 'some_variable':1+2}
    return render(request, 'my_template.html', context)

五、Django表單

1、創建表單模型

在forms.py文件中,創建一個表單模型並繼承自django.forms.Form。以下是創建表單模型的示例:

from django import forms

class ContactForm(forms.Form):
    subject = forms.CharField(max_length=100)
    message = forms.CharField(widget=forms.Textarea)
    sender = forms.EmailField()
    cc_myself = forms.BooleanField(required=False)

2、表單視圖

在views.py文件中,創建一個表單視圖,並加載對應的表單模板。以下是創建表單視圖的示例:

from django.shortcuts import render
from myapp.forms import ContactForm

def contact(request):
    form = ContactForm()
    return render(request, 'contact.html', {'form': form})

3、表單模板

在表單模板中,使用Django模板標籤和變量來渲染表單。以下是表單模板的示例:

<form action="" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Submit" />
</form>

4、處理表單數據

在表單視圖中,處理提交的表單數據。以下是處理表單數據的示例:

from django.core.mail import send_mail

def contact(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            send_mail(
                cd['subject'],
                cd['message'],
                cd.get('sender', 'noreply@example.com'),
                ['noreply@example.com'],
                reply_to=[cd.get('sender', 'noreply@example.com')],
            )
            return HttpResponseRedirect('/thanks/')
    else:
        form = ContactForm()

    return render(request, 'contact.html', {'form': form})

六、Django認證系統

1、用戶註冊

在Django中,用戶註冊可以通過使用內置的User模型和自定義的表單實現。以下是用戶註冊的示例:

from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import render, redirect

def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('login')
    else:
        form = UserCreationForm()

    return render(request, 'register.html', {'form': form})

2、用戶登錄

使用Django內置的LoginView類來處理用戶登錄。以下是處理用戶登錄的示例:

from django.contrib.auth.views import LoginView

class MyLoginView(LoginView):
    template_name = 'login.html'

    def form_valid(self, form):
        remember_me = form.cleaned_data.get('remember_me', False)
        if not remember_me:
            self.request.session.set_expiry(0)
        return super().form_valid(form)

3、用戶授權

在Django中,用戶授權可以使用裝飾器實現。以下是用戶授權的示例:

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    # 用戶已授權,執行處理

七、Django分頁

1、創建查詢集

在視圖函數中,多個對象可組合成查詢集。以下是創建查詢集的示例:

from myapp.models import Book

def book_list(request):
    book_list = Book.objects.all()
    paginator = Paginator(book_list, 10) # 每頁顯示10條數據
    page = request.GET.get('page')
    books = paginator.get_page(page)
    return render(request, 'book_list.html', {'books': books})

2、分頁模板

在分頁模板中,使用Django模板標籤和變量來渲染分頁內容。以下是分頁模板的示例:

<div class="pagination">
    
        {% if page.has_previous %}
            <a href="?page=1"><< first</a>
            <a href="?page={{ page.previous_page_number }}">< previous</a>
        {% endif %}

        <span class="current-page">
            Page {{ page.number }} of {{ page.paginator.num_pages }}.
        </span>

        {% if page.has_next %}
            <a href="?page={{ page.next_page_number }}">> next</a>
            <a href="?page={{ page.paginator.num_pages }}">>> last</a>
        {% endif %}
    
</div>

八、Django緩存

1、緩存頁面

在視圖函數中,使用cache_page進行緩存頁面。以下是緩存頁面的示例:

from django.views.decorators.cache import cache_page

@cache_page(60 * 15)
def my_view(request):
    return HttpResponse("Hello, Django!")

2、緩存數據

在視圖函數中,使用cache.set和cache.get函數進行緩存數據。以下是緩存數據的示例:

from django.core.cache import cache

def my_view(request):
    data = cache.get('my_data')
    if not data:
        data = expensive_calculation()
        cache.set('my_data', data, 60 * 15) # 緩存15分鐘
    return HttpResponse(data)

九、Django測試

1、創建測試用例

在Django中,測試用例通常位於應用程序的tests.py文件中。以下是創建測試用例的示例:

from django.test import TestCase
from django.urls import reverse

class MyTests(TestCase):
    def test_home_page(self):
        response = self.client.get(reverse('home'))
        self.assertEqual(response.status_code, 200)

2、運行測試用例

在命令行中,使用以下命令運行測試用例:

python manage.py test

測試結果將會顯示在控制台中。

原創文章,作者:AXDHO,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/372176.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
AXDHO的頭像AXDHO
上一篇 2025-04-24 06:40
下一篇 2025-04-24 06:40

相關推薦

  • MQTT使用教程

    MQTT是一種輕量級的消息傳輸協議,適用於物聯網領域中的設備與雲端、設備與設備之間的數據傳輸。本文將介紹使用MQTT實現設備與雲端數據傳輸的方法和注意事項。 一、準備工作 在使用M…

    編程 2025-04-29
  • Python wordcloud入門指南

    如何在Python中使用wordcloud庫生成文字雲? 一、安裝和導入wordcloud庫 在使用wordcloud前,需要保證庫已經安裝並導入: !pip install wo…

    編程 2025-04-29
  • Python3.6.5下載安裝教程

    Python是一種面向對象、解釋型計算機程序語言。它是一門動態語言,因為它不會對程序員提前聲明變量類型,而是在變量第一次賦值時自動識別該變量的類型。 Python3.6.5是Pyt…

    編程 2025-04-29
  • Deepin系統分區設置教程

    本教程將會詳細介紹Deepin系統如何進行分區設置,分享多種方式讓您了解如何規劃您的硬盤。 一、分區的基本知識 在進行Deepin系統分區設置之前,我們需要了解一些基本分區概念。 …

    編程 2025-04-29
  • Python小波分解入門指南

    本文將介紹Python小波分解的概念、基本原理和實現方法,幫助初學者掌握相關技能。 一、小波變換概述 小波分解是一種廣泛應用於數字信號處理和圖像處理的方法,可以將信號分解成多個具有…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Qt雷達探測教程

    本文主要介紹如何使用Qt開發雷達探測程序,並展示一個簡單的雷達探測示例。 一、環境準備 在開始本教程之前,需要確保你的開發環境已經安裝Qt和Qt Creator。如果沒有安裝,可以…

    編程 2025-04-29
  • 猿編程python免費全套教程400集

    想要學習Python編程嗎?猿編程python免費全套教程400集是一個不錯的選擇!下面我們來詳細了解一下這個教程。 一、課程內容 猿編程python免費全套教程400集包含了從P…

    編程 2025-04-29
  • Python豎線圖:從入門到精通

    Python豎線圖,即Python的繪圖工具matplotlib中的一種圖形類型,具有直觀、易於理解的特點,適用於各種數據分析和可視化場景。本文從初學者角度出發,介紹Python豎…

    編程 2025-04-29
  • Python煙花教程

    Python煙花代碼在近年來越來越受到人們的歡迎,因為它可以讓我們在終端里玩煙花,不僅具有視覺美感,還可以通過代碼實現動畫和音效。本教程將詳細介紹Python煙花代碼的實現原理和模…

    編程 2025-04-29

發表回復

登錄後才能評論