【Django自学】Django入门:如何使用django开发一个web项目(非常详细)

测试机器:windows11 x64
python版本:3.11

一、安装Django

安装步骤非常简单,使用pip安装就行

pip install django

安装完成之后,python的 Scripts 文件夹下,会多一个 django-admin.exe (管理创建django项目的工具)。Lib文件夹下site-packages下,会出现django源码。
使用下面的命令可以查看django版本号。

python -m django --version

显示:

5.0.1

二、创建与开发web项目

这里记录两种创建方式,一种是命令行方式创建,一种是通过pycharm方式创建。

1.1 通过命令行方式

打开终端,进入到项目将要放在的目录下,执行创建项目命令:

django-admin startproject 自定义的项目名称

如果提示没有这个命令,有可能是没有配置环境变量,将django-admin的存放路径加入系统变量就可以了。

1.2 通过pycharm创建项目

打开pycharm,左上角“文件”,“新建项目”,左侧:Django—配置项目位置、python解析器—创建
在这里插入图片描述
最顶上的【名称】与【位置】是项目名称与项目的存放位置。一定要确定好使用的python版本,尤其是当你的的电脑里存在多个python脚本时,一定要选择你安装django的那个python版本。如果电脑里只有一个python版本,就不需要改动。在下面就是添加模板文件,和【APP】名称,点击【创建】完成创建。 记住下面红框内两个文件夹名字,之后会用到,注意区分。
在这里插入图片描述

创建完成后,可以看到创建了很多文件,这些都是django项目的必备文件。这里简单放上,官方的解释

  • 最外层的 mysite/ 根目录只是你项目的容器, 根目录名称对 Django 没有影响,你可以将它重命名为任何你喜欢的名称。
    manage.py: 一个让你用各种方式管理 Django 项目的命令行工具。你可以阅读 django-admin 和 manage.py 获取所有 manage.py 的细节。
  • 里面一层的 mysite/ 目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 (比如 mysite.urls).
  • mysite/init.py:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。如果你是 Python 初学者,阅读官方文档中的 更多关于包的知识。
  • mysite/settings.py:Django 项目的配置文件。如果你想知道这个文件是如何工作的,请查看 Django 配置 了解细节。
  • mysite/urls.py:Django 项目的 URL 声明,就像你网站的“目录”。阅读 URL调度器 文档来获取更多关于 URL 的内容。
  • mysite/asgi.py:作为你的项目的运行在 ASGI 兼容的 Web 服务器上的入口。阅读 如何使用 ASGI 来部署 了解更多细节。
  • mysite/wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。阅读 如何使用 WSGI 进行部署 了解更多细节。

到此,项目创建完成,可以简单运行一下。pycharm里点击绿色的三角形自动开启web服务。
如果是命令行创建的,则在项目的根目录下,打开终端,运行

python manage.py runserver localhost:8000

然后打开浏览器,输入网址:

http://127.0.0.1:8000/admin

可以看到admin后台的登录页面
在这里插入图片描述
下面放上django的官方文档,里面记载了django的所有的详细介绍

https://docs.djangoproject.com/zh-hans/5.0/

可以当作一部字典,用到什么需求就查阅相关部分。这个文档,我建议大家下载下来,观看,因为这个网站跟github类似,有时候访问不了。

django中的app概念:项目和应用有什么区别?

  • 在pycharm创建项目的那张截图中,项目对应的是最上方的项目,应用对应的是下方的应用程序。
  • 应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者小型的投票程序。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用。
  • 刚才访问的http://127.0.0.1:8000/admin,是项目的后台管理,是django项目自带的应用,到此处,我们并没有开发自己的应用程序。所以接下来要做的就是开发自己的所需要的应用。

2. 创建app应用

如果是使用pycharm,按照我截图方式创建的项目,则忽略这一步,因为已经创建好了。
打开终端执行

python manage.py startapp app01

补充删除app的方式:
manage.py migrate my_app_name zero 

3. 注册app

如果是使用pycharm,按照我截图方式创建的项目,则忽略这一步,因为已经注册好了。
在项目的setting.py文件中,找到INSTALLED_APPS节点,新增注册语句即可完成注册:

'app01.apps.App01Config'

特别注意:如果不注册app,那么app下的模型model.py文件中的模型类,是无法创建数据表的。
在这里插入图片描述
这个图是我用pycharm注册的配置,与我创建项目时输入的【应用程序名称】是对应的,与上述手动输入的格式一样,只是应用名称不一样。

4. 配置数据库

如果没有数据库需求,或者想使用默认配置的,可以跳过此步骤。这个步骤实际上只是更改了数据库的存放目录。
打开setting.py,找到配置数据库的地方。我这里使用的是sqlite3数据库。如果想要使用别的数据库,可以去官方文档搜索相应的引擎配置。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

默认的路径是在项目的根目录下的,如果有需求,可以改到别的任何地方。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'D:/Databases/personinfo/person.sqlite3',
    }
}

5. 一些其他配置(可有可无)

打开setting.py
5.1 设置语言为中文,设置时区为上海

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

否则可能出现中文乱码。时区一定要改,否则如果开发项目时候使用了django的获取时间API,获取的是美国时区,会比中国慢。
5.2 设置关闭网页时,结束所有会话

SESSION_EXPIRE_AT_BROWSER_CLOSE = True

6. 编写url和视图函数对应关系(url.py文件)

6.1 配置项目url

目前尾汁,可以在项目名称里找到一个urls.py文件,打开后内容如下。这就是我们之前的访问的admin路径配置

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

修改如下:

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

几个注意的点:

  • PasswordManage可以改为你想要的路径
  • PwdMgeapp必须与你的应用名称相同
  • 强烈推荐使用include包含,这样可以防止项目有多个应用时,路径重名问题。
6.2 设置应用url

在应用程序文件夹(PwdMgeapp)下,创建urls.py,添加内容

from django.urls import path
from . import views
urlpatterns = [
    path("index/", views.index, name="index"),
]
6.3 编写视图函数

pycharm里找到左下方的django结构,在app下右键视图,指向“New View”,点击“View Function” 快捷创建视图,修改视图函数名为【index】,这里需要与6.2里设置的path名对应。
在这里插入图片描述
修改index视图函数如下:

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

如果没有使用pycharm,那么在【应用名】的文件夹下,找到“views.py”,打开后,把上面的视图函数直接复制进去就可以了。

6.4 编写html文件

templates文件夹下新建index.html,需要与6.3视图函数中render里的参数对应。内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
welcome django
</body>
</html>

templates里存放各种html文件,在与templates同目录下,创建一个static文件夹,用来存储静态文件,如图片、css、js等等。

6.5 运行程序

点击pycharm的绿色三角形运行程序,或者命令行输入

python manage.py runserver

启动成功后,访问下面网址

http://127.0.0.1:8000/PasswordManage/index/

发现显示内容
在这里插入图片描述
到此就运行成功。

以上内容是使用django进行web开发的最基本内容,实际上,只是django的冰山一角。涉及到模板渲染、数据库操作、快捷表单等等很多很多知识都没有讲。分享的官方文档中,也有一个案例,也可以操作一下。
官方文档是个好东西,一定要多研究一下。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

超声波风速风向传感器的优势及应用

TH-WQX2随着科技的不断发展&#xff0c;传感器技术日益成为众多领域中不可或缺的一部分。其中&#xff0c;超声波风速风向传感器凭借其独特的优势&#xff0c;在气象、能源、环保等领域中发挥着越来越重要的作用。 首先&#xff0c;超声波风速风向传感器无需机械转动部件&#…

【Vue】2-10、Vue 组件

一、组件化开发 组件化开发指的是根据封装的思想&#xff0c;把页面上可重用的 UI 结构封装为组件&#xff0c;从而方便项目的开发和维护。 二、Vue 组件的组成 template&#xff1a;组件的模板结构script&#xff1a;组件的 JavaScript 行为style&#xff1a;组件的样式 &…

Vim实战:使用 Vim实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

C++提取ICO图标(PE文件资源提取)

最近需要写一个提取EXE或者DLL图标资源的功能, 网上找了很久, 要么功能不好用, 最后结果如下: 1.很多是加载为HICON句柄后转换为图片保存, 全损画质..., 2.后来找了个还能用的, 详见 https://github.com/TortoiseGit/TortoiseGit/blob/master/src/Utils/IconExtractor.cpp …

git远程仓库基本操作

目录 gitremote &#xff08;查看远程仓库&#xff09; git remote add [仓库名] [url] git clone [url]&#xff08;克隆远程仓库到本地&#xff09; git push [名][分支名]&#xff08;提交到远程仓库&#xff09;​编辑 git pull [名][分支名]从远程仓库拉取​编辑 注意操作…

opencv学习 特征提取

内容来源于《opencv4应用开发入门、进阶与工程化实践》 图像金字塔 略 拉普拉斯金字塔 对输入图像进行reduce操作会生成不同分辨率的图像&#xff0c;对这些图像进行expand操作&#xff0c;然后使用reduce减去expand之后的结果&#xff0c;就会得到拉普拉斯金字塔图像。 …

Java 代理详解

Java 代理详解 文章目录 Java 代理详解1. 代理模式2. 静态代理3. 动态代理3.1. JDK 动态代理机制3.1.1. 介绍3.1.2. JDK 动态代理类使用步骤3.1.3. 代码示例 3.2. CGLIB 动态代理机制3.2.1. 介绍3.2.2. CGLIB 动态代理类使用步骤3.2.3. 代码示例 3.3. JDK 动态代理和 CGLIB 动态…

SD-WAN和专线混合组网:企业出海网络解决方案

目前&#xff0c;有很多国内企业涉足海外业务&#xff0c;如跨境电商、游戏、社交网络、区块链等。都会使用海外服务器。同时&#xff0c;这些企业在国内还有自己的机房&#xff0c;IDC或者使用国内其他云厂商的机房。如果他们想要相互通信或传输数据该怎么办&#xff1f;在成本…

最小步数模型

AcWing 1107. 魔板 #include <bits/stdc.h> using namespace std;char g[2][4]; const int N 10; unordered_map<string, pair<char, string> > pre; unordered_map<string, int> d;void Set(string s) {for(int i0; i<4; i) g[0][i] s[i];for(in…

骨传导如何使用,跟传统耳机有什么不同吗?

骨传导耳机的使用方法跟传统耳机是一样的&#xff0c;都是通过蓝牙连接来使用&#xff0c;不同的是&#xff0c;有些骨传导耳机自带内存&#xff0c;可以当做MP3来使用&#xff01; 此外&#xff0c;骨传导耳机的佩戴方式和传声方式跟传统耳机也有所不同&#xff0c;首先骨传导…

2024年美赛赛前复习大纲

CC数模-优质解答 引言 数学建模是一个将数学理论和方法应用于解决现实世界问题的过程。在数学建模比赛中&#xff0c;学生需要运用自己的数学知识和技能&#xff0c;解决给定的复杂问题。这不仅是一次展示自己能力的机会&#xff0c;也是一次学习和成长的过程。随着比赛的临近…

网络安全03---Nginx 解析漏洞复现

目录 一、准备环境 二、实验开始 2.1上传压缩包并解压 2.2进入目录&#xff0c;开始制作镜像 2.3可能会受之前环境影响&#xff0c;删除即可 ​编辑 2.4制作成功结果 2.5我们的环境一个nginx一个php 2.6访问漏洞 2.7漏洞触发结果 2.8上传代码不存在漏洞 2.9补充&#…

elementUI中表单校验的清空校验以及手动校验

this.$refs.表单.clearValidate(),这个可以传入字符串或者字符串数组&#xff0c;字符串对应的是我们自定义的rule里面的属性名&#xff0c;rule的属性名对应的是el-form-item的prop。这个api目前遇到的场景是el-radio切换时v-if展示不同的表单内容&#xff0c;但是当有校验提示…

力扣931. 下降路径最小和

动态规划 思路&#xff1a; 假设 dp[i][j] 为坐标 (i, j) 的路径最小和&#xff1b;则 dp[i][j] 上一状态&#xff1a; dp[i - 1][j] &#xff08;上一行正上方&#xff09;dp[i - 1][j - 1]&#xff08;上一行的左侧&#xff09;dp[i - 1][j 1]&#xff08;上一行的右侧&…

9.SELinux

目录 1. 概述 1.1. 概念 1.2. 作用&#xff1a; 1.3. SELinux与传统的权限区别 2. SELinux工作原理 2.1. 名词解释 2.1.1. 主体&#xff08;Subject&#xff09; 2.1.2. 目标&#xff08;Object&#xff09; 2.1.3. 策略&#xff08;Policy&#xff09; 2.1.4. 安全上…

纯静态微信小程序水果商城

首页代码 <view class"container"><!-- 轮播图 --><view class"swiper-container"><swiper class"screen-swiper" indicator-dots"true" circular"true" autoplay"true" interval"300…

穷游网酒店数据采集与可视化分析与实现

摘 要 穷游网酒店数据采集与可视化分析大屏的背景是为了满足用户对酒店数据的需求以及提供数据洞察和决策支持。随着旅游业的快速发展&#xff0c;人们对酒店信息的需求日益增加&#xff0c;而穷游网作为一家专注于旅游信息的网站&#xff0c;拥有丰富的酒店数据资源。 这个大…

计算机缺失duilib.dll的5种解决方法,轻松解决dll报错问题

计算机系统中丢失duilib.dll这个特定的动态链接库文件可能会引发一系列运行问题&#xff0c;具体表现和影响范围会根据该dll文件在系统或应用程序中的功能角色而有所不同。通常情况下&#xff0c;duilib.dll是一个与用户界面设计和渲染相关的库文件&#xff0c;它的缺失可能导致…

openGaussdb5.0单点企业版部署_KylinV10SP1

本文档环境&#xff1a;Kylin-Server-10-SP1 python2.7.16 交互式初始化环境方式 介绍 openGauss是一款开源关系型数据库管理系统&#xff0c;采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验&#xff0c;结合企业级场景需求&#xff0c;持续构建…

MySQL 数据库表的增删改查(进阶版)

目录 1 数据库约束1.1 NOT NULL 约束1.2 UNIQUE 约束1.3 DEFAULT 约束1.4 PRIMARY KEY 约束1.5 FOREIGN KEY 约束1.6 CHECK 约束 2 表的关系2.1 三大范式2.2 表的设计2.2.1 一对一 (1:1)2.2.2 一对多 (1:n)2.2.3 多对多 (m:n) 3 进阶版CRUD操作3.1 新增(Create)3.2 查询(Retrie…