Django框架丨从零开始的Django入门学习

news2025/2/6 19:13:00

Django 是一个用于构建 Web 应用程序的高级 Python Web 框架,Django是一个高度模块化的框架,使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务。

每个 Django App 的组织结构符合 Django 的 MTV 法则——Model(模型)+ Template(模板)+ View(视图),文章内容将从安装开始,对Django每一个模块的操作进行简单的讲解

1. 安装Django

想必大家肯定都安装好python了,如果没有的话网络上很多教程可以参考,安装好python后可以直接在命令行安装Django

pip install django

安装完成后,你可以通过运行以下命令验证 Django 是否成功安装:

python -m django --version

或通过import进行检查

2. 创建项目

2.1 命令行新建项目

通过终端进入到需要创建项目的指定目录,通过Django的django-admin.py命令新建工程

cd Django
django-admin startproject Hellodjango

文件组成

django_news
├── django_news              // 项目全局文件目录
│   ├── __init__.py
│   ├── asgi.py.py           // ASGI 兼容的 Web 服务器的入口(异步接受网络请求)
│   ├── settings.py          // 全局配置,包括链接数据库等操作
│   ├── urls.py              // 全局路由URL 声明
│   └── wsgi.py              // WSGI 兼容的 Web 服务器的入口(同步接受网络请求)
└── manage.py                // 项目管理脚本

2.2启动服务器(runserver)

创建好后先尝试启动服务器看是否成功

# 不定义端口号默认为8000
python manage.py runserver
python manage.py runserver 8888
# 0.0.0.0 让其它电脑可连接到开发服务器
python manage.py runserver 0.0.0.0:8888

上面三句都可以启动服务,见到以下欢迎页面就是安装创建成功了(Django 开发服务器可以保持开启,修改代码会自动重新加载,不需要重新启动服务器,非常方便。)

3 新建应用(startapp)

新建一个App——相当于功能的划分,一个 Django 应用由多个子应用组成,一般称之为 App。

python manage.py startapp new01

新建app的文件夹结构如下:

new01                     // news 应用目录
├── migrations           // 数据库迁移变更记录
│   └── __init__.py      
├── __init__.py          // 初始化模块
├── admin.py             // 默认自带的后台管理配置
├── apps.py              // 应用配置
├── models.py            // 数据模型、数据库操作等
├── tests.py             // 单元测试
└── views.py             // 视图,url里的函数在这里找

3.1 加入配置文件

在Hellodjango/settings.py中找到 INSTALLED_APPS,加入新建app的config

3.2 第一个页面

3.2.1 视图(view)

打开new01/views.py,写一个简单的index,相当于写了一个页面

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.


def index(request):
    return HttpResponse('Hello Django!')
3.2.2 接入路由

下一步是让路由系统能够访问到刚才写好的视图函数,也就是将页面加入到网页中

在Hellodjango/urls.py中,修改Django自带的urlpatterns,通常接收以下三个参数

route:必须,即实际的访问路由,空字符串等于 /,即空路由,展示为首页
view:必须,该路由将要访问的view视图
name:可选,该路由的名称,方便后续在模板中使用

from new01 import views

urlpatterns = [
    # path('admin/', admin.site.urls),
    path('index/', views.index)
]

不过当然一个系统的页面会有很多,网页编辑好了之后将路由加到urls.py的urlpatterns中就可以了

可以看到urls.py文件中,有一行path(‘admin/’, admin.site.urls),取消注释访问http://127.0.0.1:8888/admin已经可以看到后台系统的登录页面

但此时还没有连接数据库,其余内容到后面讲述4.数据库的时候再进行操作

3.3 加入网页(templates,render)

在django项目目录下新建一个templates文件夹,文件夹下面放入html文件

把templates加入到路径中(settings.py的TEMPLATES),因为默认情况下会放到app下的templates里面

写一个简单的网页web01.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset=="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>This is a web</div>
</body>
</html>

将网页写入到views.py中:在这里我们使用render函数,第一个参数为request,第二个参数是文件名,第三个参数可以不要,是把文件中用{{}}标起来的内容替换的功能。

def web01(request):
    return render(request, "web01.html")

再添加到urls.py

from new01 import views

urlpatterns = [
    # path('admin/', admin.site.urls),
    path('index/', views.index),
    path('web/', views.web01)
]

此时输入网址,可以看到网页接入成功,其他的样式等可以按照CSS 、html的语法进行添加修改web01.html文件

此时输入端口号,可以看到对应的两个页面都在

4.数据库

Django 的 MTV,我们已经讲了 T(Template)和 V(View),到了最后一个 M(Model)了。数据模型是 Django 入门最大的难点,这一步之后便能真正上手 Django 开发。下面我们先介绍一下 Django 的数据模型设计。

Django 在数据模型方面的特点:

  • 由于高度解耦的设计,可轻松切换各种关系型数据库(默认的 SQLite,可选 MySQL、PostgreSQL、Oracle 等等)
  • 强大的 ORM(Object Relation Mapping,对象关系映射)模块,使得用 Python 操作数据库非常轻松,免去了使用 SQL 的麻烦
  • 优秀的数据库迁移机制(Migration),修改数据模式(Schema)比较方便,能够适应不断变化的功能需求

4.1 开发流程

一般数据模型开发流程如下:

  1. 用 Django 定义一个新的数据模型(在new01/models.py中)
  2. makemigrations命令创建迁移文件(存储在子应用的 migrations 目录里面)
  3. migrate命令执行迁移
    (如后续发现定义有问题或不完善,可以更新数据模型,再重新进行23操作完成数据迁移)

4.2 实现一个简单的模型

4.2.1 创建数据模型

在new01/models.py中,定义数据模型以及你需要的字段,可以先随便定义两个简单的字段进行尝试,代码如下:

from django.db import models
# Create your models here.


class Post(models.Model):
    # 根据模型自动值数据库中创建一个对应的表,此表包括title, name两个字段
    title = models.CharField(max_length=50)
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.title

定义好后再命令行执行如下命令,创建迁移文件:

python manage.py makemigrations 

通过输出可以看到,成功创建了 new01/migrations/0001_initial.py 迁移脚本,再进行下一步数据库迁移:

python manage.py migrate

数据库迁移完成后,我们就可以创建用于登录后台管理的超级用户:

python manage.py createsuperuser

按照提示步骤输入用户名和密码创建成功就行

4.2.2 后台管理配置

此时再输入前面提到的http://127.0.0.1:8888/admin后台管理页面,就可以通过刚刚创建的超级用户登录查看了

但进入页面可以看到,没有我们创建的应用和模型:

这是因为没有实现后台管理的接口配置,在文件new01/admin.py中接口配置如下:

from django.contrib import admin
from .models import Post
# Register your models here.


admin.site.register(Post)

再刷新页面可以看到应用new01和模型Posts

点击 Posts 一栏的 +Add 按钮,随便添加几条数据,也可以看看修改、添加、删除等功能。

4.2.3 视图与数据连接

新建一个网页html文件,这里用先前用于测试的web01.html

在views.py中绑定好页面与数据

from django.shortcuts import render
from .models import Post

def show_name(request):
    context = {'name_list': Post.objects.all()}
    return render(request, 'web01.html', context=context)

中html文件中写好渲染数据的语法:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset=="UTF-8">
    <title>Title</title>
</head>
<body>
    {% if name_list %}
      <ul>
      {% for elem in name_list %}
        <li>
          <h3>{{ elem.title }}</h3>
          <p>{{ elem.name }}</p>
        </li>
      {% endfor %}
      </ul>
    {% else %}
      <p>no data</p>
    {% endif %}
</body>
</html>

最后不要忘记中urls.py中添加新设置好的视图

from django.urls import path
from new01 import views

urlpatterns = [
    path('name/', views.show_name),
]

最后访问定义好的路由http://127.0.0.1:8888/name,就可以看到刚才在后台管理系统中添加的数据了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2293925.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

稀疏混合专家架构语言模型(MoE)

注&#xff1a;本文为 “稀疏混合专家架构语言模型&#xff08;MoE&#xff09;” 相关文章合辑。 手把手教你&#xff0c;从零开始实现一个稀疏混合专家架构语言模型&#xff08;MoE&#xff09; 机器之心 2024年02月11日 12:21 河南 选自huggingface 机器之心编译 机器之心…

spring基础总结

先修知识&#xff1a;依赖注入&#xff0c;反转控制&#xff0c;生命周期 IDEA快捷键 Ctrl Altm:提取方法&#xff0c;设置trycatch 通用快捷键&#xff1a; Ctrl F&#xff1a;在当前文件中查找文本。Ctrl R&#xff1a;在当前文件中替换文本。Ctrl Z&#xff1a;撤销…

openRv1126 AI算法部署实战之——TensorFlow TFLite Pytorch ONNX等模型转换实战

Conda简介 查看当前系统的环境列表 conda env list base为基础环境 py3.6-rknn-1.7.3为模型转换环境&#xff0c;rknn-toolkit版本V1.7.3&#xff0c;python版本3.6 py3.6-tensorflow-2.5.0为tensorflow模型训练环境&#xff0c;tensorflow版本2.5.0&#xff0c;python版本…

java进阶1——JVM

java进阶——JVM 1、JVM概述 作用 Java 虚拟机就是二进制字节码的运行环境&#xff0c;负责装载字节码到其内部&#xff0c;解释/编译为对 应平台上的机器码指令行&#xff0c;每一条 java 指令&#xff0c;java 虚拟机中都有详细定义&#xff0c;如怎么取操 作数&#xff0c…

基于深度学习的视觉检测小项目(十六) 用户管理界面的组态

分组和权限&#xff1a; 用户分为三个组&#xff0c;管理员、普通用户、访客。 • 管理员的权限和作业范围&#xff1a; 添加和删除用户、更改所有用户的信息&#xff08;用户名、登录密码、所在分组等&#xff09;、查看和备份以及复制数据库&#xff1b; • 普通用户的权限和…

Docker使用指南(一)——镜像相关操作详解(实战案例教学,适合小白跟学)

目录 1.镜像名的组成 2.镜像操作相关命令 镜像常用命令总结&#xff1a; 1. docker images 2. docker rmi 3. docker pull 4. docker push 5. docker save 6. docker load 7. docker tag 8. docker build 9. docker history 10. docker inspect 11. docker prune…

《2025,AI重塑世界进行时》

开年爆点&#xff0c;AI 浪潮再掀高潮 2025 年开年&#xff0c;AI 领域便热闹非凡&#xff0c;热点事件不断&#xff0c;让人深刻感受到这股科技浪潮正以汹涌之势奔腾而来。先是深度求索公司&#xff08;DeepSeek&#xff09;的 DeepSeek - R1 模型横空出世&#xff0c;迅速在国…

visual studio安装

一、下载Visual Studio 访问Visual Studio官方网站。下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 在主页上找到并点击“下载 Visual Studio”按钮。 选择适合需求的版本&#xff0c;例如“Visual Studio Community”&#xff08;免费版本&#xff09;&#x…

VSCode中使用EmmyLua插件对Unity的tolua断点调试

一.VSCode中搜索安装EmmyLua插件 二.创建和编辑launch.json文件 初始的launch.json是这样的 手动编辑加上一段内容如下图所示&#xff1a; 三.启动调试模式&#xff0c;并选择附加的进程

一、tsp学习笔记——开发环境搭建

开发环境&#xff1a;window11 wsl ubuntu24.04 lypwslDESKTOP-39T8VTC:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 24.04.1 LTS Release: 24.04 Codename: noble工具安装 网络相关工具 sudo apt instal…

互联网行业常用12个数据分析指标和八大模型

本文目录 前言 一、互联网线上业务数据分析的12个指标 1. 用户数据&#xff08;4个&#xff09; (1) 存量&#xff08;DAU/MAU&#xff09; (2) 新增用户 (3) 健康程度&#xff08;留存率&#xff09; (4) 渠道来源 2. 用户行为数据&#xff08;4个&#xff09; (1) 次数/频率…

使用 Ollama 在 Windows 环境部署 DeepSeek 大模型实战指南

文章目录 前言Ollama核心特性 实战步骤安装 Ollama验证安装结果部署 DeepSeek 模型拉取模型启动模型 交互体验命令行对话调用 REST API 总结个人简介 前言 近年来&#xff0c;大语言模型&#xff08;LLM&#xff09;的应用逐渐成为技术热点&#xff0c;而 DeepSeek 作为国产开…

新春贺岁,共赴AGI之旅

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 往期精彩文章推荐 季姮教授独家文字版干货 | 面向知识渊博的大语言模型 关于AI TIME AI TIME源起于2019年&#xff0c;旨在发扬科学思辨精神&#xff0c;邀请各界人士对人工智能理论、算法和场景应用的本质问题…

C_位运算符及其在单片机寄存器的操作

C语言的位运算符用于直接操作二进制位&#xff0c;本篇简单结束各个位运算符的作业及其在操作寄存器的应用场景。 一、位运算符的简单说明 1、按位与运算符&#xff08;&&#xff09; 功能&#xff1a;按位与运算符对两个操作数的每一位执行与操作。如果两个对应的二进制…

Java面试题集合篇5:10道基础面试题

文章目录 前言41、多线程使用 ArrayList42、List 和 Set 区别43、HashSet 实现原理44、HashSet检查重复和保证数据不可重复45、BlockingQueue46、Map接口46.1、HashMap实现原理46.2、HashMap在JDK1.7和JDK1.8中不同点46.3、JDK1.7 VS JDK1.8 比较 47、HashMap的put方法流程48、…

汽车加气站操作工试题及答案​

1.天然气的主要成分是&#xff08; &#xff09;​ A. 乙烷 B. 乙烯 C. 甲烷 D. 乙炔​ 答案&#xff1a;C​ 2.加气站中&#xff0c;用来储存天然气的设备是&#xff08; &#xff09;​ A. 加气机 B. 压缩机 C. 储气井 D. 脱水装置​ 答案&#xff1a;C​ 3.以下哪…

企业四要素如何用PHP进行调用

一、什么是企业四要素&#xff1f; 企业四要素接口是在企业三要素&#xff08;企业名称、统一社会信用代码、法定代表人姓名&#xff09;的基础上&#xff0c;增加了一个关键要素&#xff0c;通常是企业注册号或企业银行账户信息。这种接口主要用于更全面的企业信息验证&#x…

【大数据技术】搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn)

搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn) jdk-8u361-linux-x64.tarhadoop-3.3.6.tar.gz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群Hadoop+MapReduce+Yarn的详细步骤。 注意: 统一约定将软件安装包存放…

【MySQL】MySQL经典面试题深度解析

文章目录 一、MySQL与C的深度结合1.1 为什么C项目需要MySQL&#xff1f;1.2 典型应用场景 二、基础概念面试题精讲2.1 存储引擎对比2.2 索引原理 三、C专项面试题解析3.1 连接池实现3.2 预处理语句3.3 批量操作优化 四、高级应用面试题剖析4.1 事务隔离级别4.2 锁机制详解4.3 查…

GitHub Copilot 越狱漏洞

研究人员发现了两种操控 GitHub 的人工智能&#xff08;AI&#xff09;编码助手 Copilot 的新方法&#xff0c;这使得人们能够绕过安全限制和订阅费用、训练恶意模型等。 第一种技巧是将聊天交互嵌入 Copilot 代码中&#xff0c;利用 AI 的问答能力&#xff0c;使其产生恶意输…