好的,各位朋友们,今天咱们就来聊聊 Django 这个“瑞士军刀”级别的 Web 框架,一起从零开始,打造一个功能完善的 Web 应用。别害怕,咱不搞那些枯燥的理论,就当老朋友唠嗑,轻松愉快地把 Django 玩转起来!😉
开场白:Django,Web 开发的“效率神器”
各位,想象一下,你要盖一栋房子。如果你啥都自己来,从搬砖到砌墙,那得累死个人!但是,如果你有了 Django 这个“建筑队”,它帮你搞定了地基、框架,甚至连水电线路都预留好了,你只需要专注于装修和个性化设计,是不是瞬间轻松多了?
Django 就是 Web 开发界的“建筑队”,它是一个高级 Python Web 框架,鼓励快速开发和干净、实用的设计。它帮你处理了大量的底层工作,比如数据库连接、用户认证、模板渲染等等,让你能更专注于业务逻辑,高效地构建你的 Web 应用。
第一步:磨刀不误砍柴工,环境搭建要做好
古人云:“工欲善其事,必先利其器。” 在开始 Django 之旅之前,咱们得先准备好工具。
-
Python: Django 是 Python 的框架,所以你得先安装 Python。建议使用 Python 3.6+ 版本。
- Windows:直接去 Python 官网下载安装包,记得勾选 "Add Python to PATH"。
- macOS:通常自带 Python,但建议使用 Homebrew 安装最新版本。
- Linux:各个发行版都有自己的包管理器,比如 apt、yum,直接安装即可。
-
pip: Python 的包管理工具,用来安装 Django 和其他依赖库。通常 Python 安装时会自带 pip,如果没有,可以手动安装。
-
Virtualenv(可选但强烈推荐): 虚拟环境可以让你为每个项目创建一个独立的环境,避免不同项目之间的依赖冲突。
- 安装:
pip install virtualenv
- 创建:
virtualenv myprojectenv
- 激活:
source myprojectenv/bin/activate
(Linux/macOS) 或myprojectenvScriptsactivate
(Windows)
- 安装:
-
Django: 万事俱备,只欠 Django!
- 安装:
pip install django
- 安装:
第二步:创建你的第一个 Django 项目,Hello World!
一切准备就绪,咱们来创建第一个 Django 项目,感受一下 Django 的魅力!
-
创建项目: 在命令行中输入:
django-admin startproject mysite
。 这会在当前目录下创建一个名为mysite
的文件夹,里面包含了 Django 项目的基本结构。 -
项目结构: 咱们来看看
mysite
文件夹里的内容:mysite/
: 项目的容器目录。manage.py
: 一个命令行工具,用于管理 Django 项目。mysite/__init__.py
: 一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。mysite/settings.py
: 项目的配置文件,包含数据库设置、静态文件配置等等。mysite/urls.py
: 项目的 URL 路由,定义了 URL 和视图函数之间的映射关系。mysite/asgi.py
: 异步服务器网关接口。mysite/wsgi.py
: Web 服务器网关接口,用于部署项目到生产环境。
-
运行开发服务器: 进入
mysite
目录,运行python manage.py runserver
。- 这时,你会看到类似
Starting development server at http://127.0.0.1:8000/
的信息。 - 在浏览器中输入
http://127.0.0.1:8000/
,如果看到 Django 的欢迎页面,恭喜你,你的第一个 Django 项目跑起来了!🎉
- 这时,你会看到类似
第三步:创建你的第一个 Django 应用,让它“动起来”!
Django 项目就像一个大的容器,可以包含多个应用。每个应用负责一个特定的功能模块,比如博客、论坛、电商等等。
-
创建应用: 咱们来创建一个名为
myblog
的应用:python manage.py startapp myblog
。 这会在mysite
目录下创建一个名为myblog
的文件夹,里面包含了应用的基本结构。 -
应用结构:
myblog
文件夹里的内容:myblog/__init__.py
: 一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。myblog/admin.py
: 用于配置 Django 管理后台。myblog/apps.py
: 应用的配置信息。myblog/migrations/
: 用于数据库迁移。myblog/models.py
: 定义数据模型,也就是数据库的表结构。myblog/tests.py
: 编写单元测试。myblog/views.py
: 定义视图函数,处理用户的请求,返回响应。
-
注册应用: 打开
mysite/settings.py
,找到INSTALLED_APPS
,把'myblog'
添加进去。INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myblog', # 添加你的应用 ]
-
编写视图函数: 打开
myblog/views.py
,编写一个简单的视图函数:from django.http import HttpResponse def index(request): return HttpResponse("Hello, world! This is my first Django app.")
-
配置 URL 路由:
-
在
myblog
目录下创建一个urls.py
文件,内容如下:from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ]
-
打开
mysite/urls.py
,引入myblog
的 URL 路由:from django.contrib import admin from django.urls import include, path urlpatterns = [ path('myblog/', include('myblog.urls')), path('admin/', admin.site.urls), ]
-
-
访问你的应用: 重新运行开发服务器,在浏览器中输入
http://127.0.0.1:8000/myblog/
,如果看到 "Hello, world! This is my first Django app.",说明你的应用已经成功运行了!👏
第四步:模型(Models),数据的“灵魂”
模型是 Django 的核心概念之一,它定义了你的数据结构,也就是数据库的表结构。
-
定义模型: 打开
myblog/models.py
,定义一个Article
模型:from django.db import models class Article(models.Model): title = models.CharField(max_length=200) content = models.TextField() pub_date = models.DateTimeField('date published') def __str__(self): return self.title
title
:文章标题,CharField 类型,最大长度 200。content
:文章内容,TextField 类型,可以存储大量文本。pub_date
:发布日期,DateTimeField 类型,存储日期和时间。__str__
方法:定义对象的字符串表示,方便在管理后台查看。
-
数据库迁移: Django 使用迁移来管理数据库结构的变化。
-
创建迁移文件:
python manage.py makemigrations myblog
-
应用迁移:
python manage.py migrate
-
Django 会根据你的模型定义,自动创建数据库表。
-
-
配置数据库: 打开
mysite/settings.py
,找到DATABASES
,配置数据库连接信息。 Django 默认使用 SQLite,你可以根据需要修改为 MySQL、PostgreSQL 等其他数据库。DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } }
第五步:管理后台(Admin),数据的“后花园”
Django 提供了强大的管理后台,可以方便地管理你的数据。
-
注册模型: 打开
myblog/admin.py
,注册Article
模型:from django.contrib import admin from .models import Article admin.site.register(Article)
-
创建管理员账号: 运行
python manage.py createsuperuser
,按照提示输入用户名、邮箱和密码。 -
访问管理后台: 在浏览器中输入
http://127.0.0.1:8000/admin/
,使用刚才创建的管理员账号登录。- 你可以在管理后台中创建、修改、删除
Article
数据。
- 你可以在管理后台中创建、修改、删除
第六步:模板(Templates),页面的“灵魂”
模板用于生成 HTML 页面,可以将数据动态地渲染到页面上。
-
创建模板目录: 在
myblog
目录下创建一个名为templates
的文件夹,再在templates
目录下创建一个名为myblog
的文件夹(为了避免和其他应用的模板冲突)。 -
创建模板文件: 在
myblog/templates/myblog/
目录下创建一个名为index.html
的文件,内容如下:<!DOCTYPE html> <html> <head> <title>My Blog</title> </head> <body> <h1>Welcome to my blog!</h1> <ul> {% for article in articles %} <li><a href="#">{{ article.title }}</a></li> {% endfor %} </ul> </body> </html>
-
修改视图函数: 打开
myblog/views.py
,修改index
视图函数:from django.shortcuts import render from .models import Article def index(request): articles = Article.objects.all() context = {'articles': articles} return render(request, 'myblog/index.html', context)
-
访问你的应用: 重新运行开发服务器,在浏览器中输入
http://127.0.0.1:8000/myblog/
,如果看到文章列表,说明你的模板已经成功渲染了!
第七步:表单(Forms),与用户“对话”
表单用于收集用户输入的数据。
-
创建表单类: 在
myblog
目录下创建一个名为forms.py
的文件,内容如下:from django import forms class ArticleForm(forms.Form): title = forms.CharField(label="Title", max_length=200) content = forms.CharField(label="Content", widget=forms.Textarea)
-
修改视图函数: 打开
myblog/views.py
,添加一个创建文章的视图函数:from django.shortcuts import render, redirect from .forms import ArticleForm def create_article(request): if request.method == 'POST': form = ArticleForm(request.POST) if form.is_valid(): title = form.cleaned_data['title'] content = form.cleaned_data['content'] Article.objects.create(title=title, content=content, pub_date=timezone.now()) return redirect('index') # 重定向到文章列表页面 else: form = ArticleForm() return render(request, 'myblog/create_article.html', {'form': form})
-
创建模板文件: 在
myblog/templates/myblog/
目录下创建一个名为create_article.html
的文件,内容如下:<!DOCTYPE html> <html> <head> <title>Create Article</title> </head> <body> <h1>Create a new article</h1> <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Save</button> </form> </body> </html>
-
配置 URL 路由: 打开
myblog/urls.py
,添加一个创建文章的 URL 路由:from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), path('create/', views.create_article, name='create_article'), ]
-
在文章列表页面添加链接: 打开
myblog/templates/myblog/index.html
,添加一个链接到创建文章页面的链接:<!DOCTYPE html> <html> <head> <title>My Blog</title> </head> <body> <h1>Welcome to my blog!</h1> <a href="{% url 'create_article' %}">Create a new article</a> <ul> {% for article in articles %} <li><a href="#">{{ article.title }}</a></li> {% endfor %} </ul> </body> </html>
第八步:进阶之路,更上一层楼
恭喜你,已经掌握了 Django 的基本用法!接下来,你可以继续深入学习以下内容:
- 用户认证: Django 提供了强大的用户认证系统,可以方便地实现用户注册、登录、权限管理等功能。
- 静态文件: 管理静态文件,比如 CSS、JavaScript、图片等。
- AJAX: 使用 AJAX 技术实现页面的局部刷新,提升用户体验。
- REST API: 构建 RESTful API,方便与其他应用进行数据交互。
- 测试: 编写单元测试和集成测试,保证代码质量。
- 部署: 将 Django 项目部署到生产环境,比如 Heroku、AWS、DigitalOcean 等。
总结:Django,Web 开发的“百宝箱”
Django 是一个功能强大、灵活易用的 Web 框架,可以帮助你快速构建各种类型的 Web 应用。 掌握 Django,就像拥有了一个 Web 开发的“百宝箱”,可以让你在 Web 开发的道路上更加得心应手! 💪
表格:常用 Django 命令
命令 | 功能 |
---|---|
django-admin startproject |
创建一个新的 Django 项目 |
python manage.py startapp |
创建一个新的 Django 应用 |
python manage.py runserver |
运行开发服务器 |
python manage.py makemigrations |
创建数据库迁移文件 |
python manage.py migrate |
应用数据库迁移 |
python manage.py createsuperuser |
创建管理员账号 |
python manage.py shell |
进入 Django Shell,可以交互式地操作数据 |
希望这篇文章能帮助你入门 Django,开启你的 Web 开发之旅! 祝你学习愉快! 😊