溫馨提示×

溫馨提示×

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

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

Django入門項目操作實例

發布時間:2021-06-26 10:08:29 來源:億速云 閱讀:145 作者:chen 欄目:大數據
# Django入門項目操作實例

## 前言

Django作為Python最流行的Web框架之一,以其"開箱即用"的特性和完善的文檔體系深受開發者喜愛。本文將通過一個完整的博客系統開發實例,帶您快速掌握Django的核心開發流程。

## 環境準備

### 1. 安裝Python
確保系統已安裝Python 3.6+:
```bash
python --version

2. 創建虛擬環境

python -m venv myenv
source myenv/bin/activate  # Linux/Mac
myenv\Scripts\activate  # Windows

3. 安裝Django

pip install django

項目創建

1. 創建項目骨架

django-admin startproject myblog
cd myblog

項目結構說明:

myblog/
    manage.py
    myblog/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

2. 創建應用

python manage.py startapp blog

需在settings.py中注冊應用:

INSTALLED_APPS = [
    ...
    'blog.apps.BlogConfig',
]

數據模型設計

1. 定義模型

編輯blog/models.py

from django.db import models
from django.contrib.auth.models import User

class Category(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True)

    def __str__(self):
        return self.title

2. 遷移數據庫

python manage.py makemigrations
python manage.py migrate

后臺管理配置

1. 創建超級用戶

python manage.py createsuperuser

2. 注冊模型

編輯blog/admin.py

from django.contrib import admin
from .models import Category, Post

admin.site.register(Category)
admin.site.register(Post)

訪問http://127.0.0.1:8000/admin即可管理數據

視圖與URL配置

1. 編寫視圖

編輯blog/views.py

from django.shortcuts import render, get_object_or_404
from .models import Post

def post_list(request):
    posts = Post.objects.all().order_by('-created_at')
    return render(request, 'blog/post_list.html', {'posts': posts})

def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    return render(request, 'blog/post_detail.html', {'post': post})

2. 配置URL

項目級URL(myblog/urls.py):

from django.contrib import admin
from django.urls import path, include

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

應用級URL(新建blog/urls.py):

from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),
    path('post/<int:pk>/', views.post_detail, name='post_detail'),
]

模板開發

1. 創建模板目錄

blog/
    templates/
        blog/
            base.html
            post_list.html
            post_detail.html

2. 基礎模板

base.html

<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}My Blog{% endblock %}</title>
</head>
<body>
    <header>
        <h1><a href="/">My Blog</a></h1>
    </header>
    <main>
        {% block content %}
        {% endblock %}
    </main>
</body>
</html>

3. 文章列表模板

post_list.html

{% extends 'blog/base.html' %}

{% block content %}
    {% for post in posts %}
        <article>
            <h2><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h2>
            <p>{{ post.content|truncatechars:200 }}</p>
            <time>Published: {{ post.created_at }}</time>
        </article>
    {% endfor %}
{% endblock %}

4. 文章詳情模板

post_detail.html

{% extends 'blog/base.html' %}

{% block content %}
    <article>
        <h2>{{ post.title }}</h2>
        <p>{{ post.content }}</p>
        <time>Published: {{ post.created_at }}</time>
        {% if post.category %}
            <p>Category: {{ post.category.name }}</p>
        {% endif %}
    </article>
{% endblock %}

靜態文件處理

1. 創建靜態目錄

blog/
    static/
        blog/
            style.css

2. 添加CSS樣式

style.css

body {
    font-family: Arial, sans-serif;
    line-height: 1.6;
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
}

article {
    margin-bottom: 40px;
    padding-bottom: 20px;
    border-bottom: 1px solid #eee;
}

3. 加載靜態文件

在模板頭部添加:

{% load static %}
<link rel="stylesheet" href="{% static 'blog/style.css' %}">

運行與測試

1. 啟動開發服務器

python manage.py runserver

2. 訪問頁面

  • 首頁:http://127.0.0.1:8000/
  • 文章詳情:http://127.0.0.1:8000/post/1/

擴展功能建議

  1. 用戶認證:實現注冊/登錄功能
  2. 評論系統:允許用戶對文章發表評論
  3. 分頁功能:當文章數量較多時添加分頁
  4. 搜索功能:按標題或內容搜索文章
  5. Markdown支持:讓文章支持Markdown語法

總結

通過這個完整的博客系統實例,我們實踐了Django開發的主要流程: 1. 項目創建與環境配置 2. 數據模型設計與遷移 3. 后臺管理界面配置 4. 視圖函數與URL路由 5. 模板系統與靜態文件處理

Django的MTV模式(Model-Template-View)提供了清晰的代碼組織方式,其豐富的內置功能可以顯著提高開發效率。建議讀者在此基礎上繼續探索Django的更多高級特性,如中間件、信號系統、緩存機制等。 “`

注:本文實際約1500字,通過調整示例代碼的詳細程度或擴展功能建議部分可精確控制字數。如需完整1550字版本,可適當增加以下內容: 1. 用戶認證部分的詳細實現 2. 分頁功能的代碼示例 3. Django調試技巧章節 4. 部署到生產環境的簡要說明

向AI問一下細節

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

AI

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