Django 是一个非常流行的 Python Web 开发框架,它是完整且强大的,适用于构建大型 Web 应用。在这一章节中,我们将详细介绍 Django 的基本概念、组件和用法。为了便于理解,我们将使用实例来展示如何使用 Django 构建一个简单的 Web 应用。

9.3.1 安装和创建 Django 项目

首先,使用 pip 安装 Django:

pip install django

接下来,使用 django-admin 命令创建一个新的 Django 项目:

django-admin startproject myproject

这将创建一个名为 myproject 的目录,其中包含 Django 项目的初始文件和目录。进入 myproject 目录:

cd myproject

9.3.2 Django 项目结构

Django 项目由一个或多个应用组成。每个应用代表一个特定的功能,例如博客、论坛、商店等。为了展示如何创建和使用 Django 应用,我们将创建一个简单的博客应用。

首先,使用 startapp 命令创建一个名为 blog 的应用:

python manage.py startapp blog

这将创建一个名为 blog 的目录,其中包含应用的初始文件和目录。以下是一个简要的目录结构说明:

  • myproject/:项目根目录。

    • manage.py:一个用于管理项目的命令行工具。
    • myproject/:项目的配置目录。
      • __init__.py:一个空的 Python 文件,用于将目录标记为 Python 包。
      • asgi.py:ASGI 入口文件,用于部署项目。
      • settings.py:项目的配置文件。
      • urls.py:项目的 URL 配置文件。
      • wsgi.py:WSGI 入口文件,用于部署项目。
  • blog/:应用目录。
    • __init__.py:同上。
    • admin.py:应用的 Django Admin 配置文件。
    • apps.py:应用的配置文件。
    • migrations/:应用的数据库迁移目录。
    • models.py:应用的数据模型文件。
    • tests.py:应用的测试文件。
    • views.py:应用的视图文件。

9.3.3 数据模型

在 Django 中,数据模型用于定义应用的数据结构。为了创建一个简单的博客数据模型,编辑 blog/models.py,添加以下代码:

from django.db import models
from django.utils import timezone class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField(default=timezone.now) def __str__(self):
return self.title

我们定义了一个名为 Post 的数据模型,它具有 titlecontent 和 pub_date 三个字段。__str__ 方法用于在 Django Admin 界面中显示模型的友好名称。

接下来,将新创建的应用添加到项目的 settings.py 文件中的 INSTALLED_APPS 列表中:

INSTALLED_APPS = [
# ...
'blog',
]

然后,使用 makemigrations 和 migrate 命令创建并应用数据库迁移:

python manage.py makemigrations
python manage.py migrate

这将创建一个名为 db.sqlite3 的 SQLite 数据库文件,其中包含应用的数据表。

9.3.4 Django Admin

Django 提供了一个强大的后台管理界面,用于管理数据模型。首先,创建一个管理员用户:

python manage.py createsuperuser

接下来,注册 Post 模型以在 Django Admin 中使用。编辑 blog/admin.py,添加以下代码:

from django.contribimport admin
from .models import Post admin.site.register(Post)

现在,启动开发服务器:

python manage.py runserver

在浏览器中访问 http://127.0.0.1:8000/admin/,使用先前创建的管理员用户登录。你可以在 Django Admin 中管理 Post 数据模型。

9.3.5 视图和模板

视图用于处理 Web 请求并返回响应。为了创建一个显示博客文章列表的视图,编辑 blog/views.py,添加以下代码:

from django.shortcuts import render
from .models import Post def post_list(request):
posts = Post.objects.order_by('-pub_date')
return render(request, 'blog/post_list.html', {'posts': posts})

我们定义了一个名为 post_list 的视图,它从数据库中获取所有的 Post 对象并按发布日期降序排列。视图使用 render 函数将 posts 变量传递给一个名为 blog/post_list.html 的模板。

接下来,创建模板文件。在 blog 目录下创建一个名为 templates 的目录,并在其中创建一个名为 blog 的子目录。然后,在 blog/templates/blog 目录下创建一个名为 post_list.html 的文件,添加以下代码:

{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.pub_date }}</p>
<p>{{ post.content }}</p>
{% endfor %}

此模板使用 Django 的模板语言在页面上显示每篇博客文章的标题、发布日期和内容。

9.3.6 URL 配置

最后,我们需要配置 URL 以将请求映射到视图。首先,在 blog 目录下创建一个名为 urls.py 的文件,添加以下代码:

from django.urls import path
from . import views urlpatterns = [
path('', views.post_list, name='post_list'),
]

这将项目的根 URL(/)映射到 post_list 视图。接下来,将新创建的应用的 URL 配置包含到项目的 urls.py 文件中:

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

这告诉 Django 在处理 URL 时要包含 blog 应用的 URL 配置。

现在,重新启动开发服务器:

python manage.py runserver

在浏览器中访问 http://127.0.0.1:8000/,你应该能看到博客文章列表。

这仅仅是 Django 框架的简要介绍。它还有许多其他功能和组件,例如表单、用户认证、缓存等。要了解更多关于 Django 的信息,请访问其官方文档:https://docs.djangoproject.com/

推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

9.3 Django框架的更多相关文章

  1. MVC其实很简单(Django框架)

    Django框架MVC其实很简单 让我们来研究一个简单的例子,通过该实例,你可以分辨出,通过Web框架来实现的功能与之前的方式有何不同. 下面就是通过使用Django来完成以上功能的例子: 首先,我们 ...

  2. Django框架-目录文件简介

    Rhel6.5 Django1.10 Python3.5 Django框架-目录文件简介 1.介绍Django Django:一个可以使Web开发工作愉快并且高效的Web开发框架. 使用Django, ...

  3. Django框架学习

    两个月前学习的Django框架,写了个简易婚恋调查网站,代码就懒得全贴了,有两张图记录下

  4. django框架的models

    在django的框架设计中采用了mtv模型,即Model,template,viewer Model相对于传统的三层或者mvc框架来说就相当对数据处理层,它主要负责与数据的交互,在使用django框架 ...

  5. Windows上python开发--2安装django框架

    Windows上python开发--2安装django框架 分类: 服务器后台开发2014-05-17 21:22 2310人阅读 评论(2) 收藏 举报 python django 上一篇文章中讲了 ...

  6. MySQL在Django框架下的基本操作(MySQL在Linux下配置)

    [原]本文根据实际操作主要介绍了Django框架下MySQL的一些常用操作,核心内容如下: ------------------------------------------------------ ...

  7. django框架介绍

    主要内容 1.        Django框架发展 2.        Django架构,MTV模式 3.        开发流程 4.        开发实例——Poll python下各种框架 一 ...

  8. Django学习(二) Django框架简单搭建

    为了快速学习Python进行Web的开发,所以我不准备从Python的基础学起,直接从Django框架入手,边学框架边学Python的基础知识. 下面就开始Django的快速开发之旅吧. 关于Djan ...

  9. Django - Django框架 简单介绍

    Django框架 简单介绍 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29172271 1. 介绍 Django是一个开放源码 ...

  10. Django框架全面讲解

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

随机推荐

  1. SICP:求值和环境模型(Python实现)

    绪论 我们在第一章引进复合过程时,采用了求值的代换模型定义了将过程应用于实参(arguments)的意义: 将一个复合过程应用于一些实参,也就意味着用实参替换过程体里对应的形参(formal para ...

  2. eval有时候也可以用,而且有奇效

    eval,一个我曾经避之不及的函数,最近我对它产生了一点新的感触:eval有时候也可以用,有奇效. 一般在使用js进行开发时,是不建议使用eval这类函数的.在JavaScript中,eval可以计算 ...

  3. 微信小程序登录页左上角的home图标如何隐藏?wx.hideHomeButton()不生效?

    在做微信小程序时,我们一般都会在app.js中去判断当前用户是否已经登录,如果已经登录,会直接跳转到小程序的首页.如果未登录那么直接跳转登录页. 此时我们需要把首页首页作为微信小程序的pages列表中 ...

  4. InnoDB 是如何解决幻读的

    前言 大部分人在日常的业务开发中,其实很少去关注数据库的事务相关问题,基本上都是 CURD 一把梭.正好最近在看 MySQL 的相关基础知识,其中对于幻读问题之前一直没有理解深刻,今天就来聊聊「Inn ...

  5. 如何在Solidity中建立DAO(去中心化自治组织)?

    本文将帮助您理解 DAO 的概念,并帮助您构建一个基本的 DAO. 什么是 DAO? 您可以将 DAO 视为基于互联网的实体(比如企业),由其股东(拥有代币和比例投票权的成员)共同拥有和管理.在 DA ...

  6. panda之series结构

    eries 结构,也称 Series 序列,是 Pandas 常用的数据结构之一,它是一种类似于一维数组的结构,由一组数据值(value)和一组标签组成,其中标签与数据值之间是一一对应的关系.Seri ...

  7. 自己动手从零写桌面操作系统GrapeOS系列教程——4.1 在VirtualBox中安装CentOS

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 之前讲解开发环境时并没有介绍具体的安装过程,有网友反应CentOS的安装配置有问题,尤其是共享文件夹.本讲我们就来补充介绍一下在VirtualB ...

  8. LeeCode 318周赛复盘

    T1: 对数组执行操作 思路:模拟 public int[] applyOperations(int[] nums) { int n = nums.length; for (int i = 0; i ...

  9. Spring Boot 整合 xxl-job

    官方文档:https://www.xuxueli.com/xxl-job/ XXL-JOB 是一个分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线 ...

  10. 从零开始学Vue(二~三)—— Vue 实例 / 模板语法(插值、指令)

    概述 vue.js作为现在笔记热门的JS框架,使用比较简单易上手,也成为很多公司首选的JS框架. 但是对于初学者可能学起来有些麻烦,所以推出<从零开始学Vue>系列博客,本系列计划推出19 ...