目录
1.创建Django项目
2.创建Django应用
3.定义ORM模型
4.创建并执行数据库迁移
5.定义视图函数
6.定义URL路由
7.编写模板
Django是一个基于Python的Web框架,它旨在提供开发人员一个高效而且富有灵活性的工具集。它包含了一套完整的组件,涵盖了从路由、视图、模板、表单到ORM等多个方面,能够让开发人员快速搭建一套高质量的Web应用。Django也是Python社区最主流的Web框架之一,许多知名网站如Instagram、Pinterest和Mozilla等都基于Django构建。
在本篇文章中,我们将为大家介绍如何搭建一个简单的Django应用,并为您提供详细的代码示例。本文假设读者已经掌握了Python基础及Web开发相关知识,并安装了Django(本文中使用的版本为3.2.5)。
首先,我们需要在本地创建一个新的Django项目。此处我们创建一个名为“myproject”的项目。
运行以下命令:
django-admin startproject myproject
创建好项目之后,我们会得到以下目录结构:
myproject/
manage.py
myproject/
__init__.py
asgi.py
settings.py
urls.py
wsgi.py
其中:
在项目中,我们可以创建多个Django应用。每个Django应用都是独立的模块,包含自己的URL映射、视图、模板等组件。我们创建一个名为“blog”的应用,来演示Django应用的创建过程。
在项目根目录下运行以下命令:
python manage.py startapp blog
创建好应用之后,我们会得到以下目录结构:
blog/
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
migrations/
__init__.py
其中:
在Django中,ORM模型映射数据库中的表,我们可以通过ORM模型来操作对应表中的数据。Django中的ORM模型以类形式表现,一个模型类代表着一个表。在blog应用中,我们定义一个名为Post的模型,用于存储博客文章数据。
在blog/models.py中添加以下代码:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=50)
body = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
在上述代码中,我们继承了Django中的Model类,这使得此类变成了一个ORM模型。其中title、body、pub_date分别代表着博客文章的标题、正文和发布时间,类型分别为CharField、TextField和DateTimeField。str()方法定义了在调用print函数时显示的字符串格式。
Django中的ORM模型一般需要基于其定义的结构生成数据库表结构。为此,Django提供了一个叫做迁移(migrations)的机制,用来生成、修改和管理数据库表结构。通过运行以下命令,我们可以生成Post模型的迁移文件:
python manage.py makemigrations blog
接着,我们可以通过运行以下命令,在数据库中创建Post模型对应的表:
python manage.py migrate
视图函数是Django应用的核心组件之一,用于处理HTTP请求,并返回HTTP响应。在我们的博客应用中,我们定义一个主页视图和一个文章详情视图。在blog/views.py中添加以下代码:
from django.shortcuts import render, get_object_or_404
from . models import Post
def home(request):
posts = Post.objects.all().order_by('-pub_date')
return render(request, 'blog/home.html', {'posts':posts})
def post_detail(request, post_id):
post = get_object_or_404(Post, pk=post_id)
return render(request, 'blog/post_detail.html', {'post':post})
在上述代码中,我们使用了Django提供的render函数,来渲染指定模板,并将指定的数据传递给模板。
注意,我们使用了get_object_or_404函数,这个函数会在查询结果为空时返回404错误页面,而不是抛出异常。
Django将URL路由映射为视图函数,我们需要在项目的urls.py中定义URL路由规则。在本例中,我们将博客应用的主页映射到“/”路径,并将文章详情页面映射到“/post/
在myproject/urls.py中添加以下代码:
from django.contrib import admin
from django.urls import path, include
from blog import views
urlpatterns = [
path('', views.home, name='home'),
path('post/', views.post_detail, name='post_detail'),
path('admin/', admin.site.urls),
]
在上述代码中,我们使用了path函数来定义URL路由规则。注意,我们将其命名为home和post_detail。
最后一步是编写模板,Django使用模板来生成最终的HTML页面。在blog应用中,我们创建了两个模板,分别表示博客首页和文章详情页面。新建blog/templates/blog/home.html文件,添加以下代码:
Welcome to Blog
Blog
{% for post in posts %}
- {{ post.title }}
{% endfor %}
在上述代码中,我们使用Django模板系统中的for标签遍历查询到的所有文章,并通过url模板标签定义文章详情页面的URL地址。
接着,我们新建blog/templates/blog/post_detail.html文件,添加以下代码:
{{ post.title }}
{{ post.title }}
{{ post.body }}
{{ post.pub_date }}
在上述代码中,我们使用Django模板系统中的变量标签来显示文章的标题、正文和发布时间。
至此,我们已经完成了一个简单的Django应用的搭建,可以在浏览器中访问了。运行以下命令启动Django开发服务器:
python manage.py runserver
然后在浏览器中访问http://localhost:8000即可浏览博客首页。点击任意一篇文章的标题,即可前往文章详情页面。
本文仅涵盖了Django的入门部分,Django框架拥有更加强大和丰富的功能,如表单、图片上传、用户认证等等,读者可以参考Django官方文档深入了解。