【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

5.3 设置静态文件夹位置
当需要访问静态文件时,会根据设置的文件夹去寻找

STATICFILES_DIRS = [BASE_DIR / "static",  # 假设你的静态文件在项目的static文件夹中
]
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的冰山一角。涉及到模板渲染、数据库操作、快捷表单等等很多很多知识都没有讲。分享的官方文档中,也有一个案例,也可以操作一下。
官方文档是个好东西,一定要多研究一下。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

优云智算:借助强大镜像社区,开启AI算力新纪元!

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux网络编程 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ 目录 前言&#xff1a; 平台介绍&#xff1a; …

抖音生活服务加强探店内容治理,2024年达人违规率下降30%

发布 | 大力财经 2月27日&#xff0c;抖音生活服务发布《2024抖音生活服务消费者权益保护年度报告》&#xff08;以下简称“报告”&#xff09;。报告显示&#xff0c;过去一年&#xff0c;抖音生活服务针对消费者反感的虚假、夸张探店内容&#xff0c;开展了专项治理。通过一…

LeetCode 热门100题-回文链表

题目描述&#xff1a; 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true 逻辑&#xff1a; 首先…

SpringCloud之Eureka、Ribbon、OpenFeign

目录1. SpringCloud Eureka&#xff08;服务注册与发现组件&#xff09;2. SpringCloud Ribbon&#xff08;负载均衡与服务调用组件&#xff09;3. SpringCloud OpenFeign&#xff08;负载均衡与服务调用组件&#xff09;SpringCloud&#xff1a;用于开发高度可扩展、高性能的分…

mamba_ssm和causal-conv1d详细安装教程

1.前言 Mamba是近年来在深度学习领域出现的一种新型结构&#xff0c;特别是在处理长序列数据方面表现优异。在本文中&#xff0c;我将介绍如何在 Linux 系统上安装并配置 mamba_ssm 虚拟环境。由于官方指定mamba_ssm适用于 PyTorch 版本高于 1.12 且 CUDA 版本大于 11.6 的环境…

【MySQL】表的基本操作

??表的基本操作 文章目录&#xff1a; 表的基本操作 创建查看表 创建表 查看表结构 表的修改 表的重命名 表的添加与修改 删除表结构 总结 前言&#xff1a; 在数据库中&#xff0c;数据表是存储和组织数据的基本单位&#xff0c;对于数据表的操作是每个程序员需要烂熟…

CES Asia 2025聚焦量子计算,多领域进展引关注

作为亚洲地区极具影响力的科技盛会&#xff0c;CES Asia 2025第七届亚洲消费电子技术贸易展&#xff08;赛逸展&#xff09;将在首都北京举办。本届展会以“创新、智能、互联”为主题&#xff0c;将全方位展示全球消费科技领域的最新成果与发展趋势。其中&#xff0c;量子计算作…

wps加载项学习3-扩展

WPS扩展API &#xff08;创建一个WebShape&#xff0c;WebShape身上有一个DataSource方法&#xff0c;DataSource有一个属性CreateDataRange&#xff09;绑定数据源&#xff0c;具体应用场景未知 NativeX扩展&#xff0c;把C&#xff0c;ruby&#xff0c;python等语言实现的算法…

进程间通信 —— 共享内存

目录 1.共享内存实现通信的原理 2.如何使用共享内存实现通信 共享内存通信接口介绍 shmget shmat shmdt shmctl 使用示例 key和shmid 3.共享内存通信的优缺点 缺点&#xff1a;不提供任何同步机制&#xff0c;可能会造成数据混乱。 优点&#xff1a;共享内存是进程…

3.【基于深度学习YOLOV11的车辆类型检测系统】

文章目录 研究背景主要工作内容一、系统核心功能介绍及效果演示演示&#xff1a;软件主要功能&#xff1a;检测界面各大板块说明&#xff1a;检测区域&#xff1a;结果显示&#xff1a;主要功能说明:&#xff08;1&#xff09;图片检测说明&#xff08;2&#xff09;图片批量检…

汽车悬架系统技术演进:从被动到全主动的革新之路(主动悬架类型对比)

在汽车工业的百年发展史中&#xff0c;悬架系统始终是平衡车辆性能与舒适性的关键战场。随着消费者对驾乘体验要求的不断提升&#xff0c;传统被动悬架已难以满足中高端车型的需求&#xff0c;而半主动与全主动悬架技术的崛起&#xff0c;正在重塑行业格局。本文将深入解析三大…

跨平台文件互传工具

一款高效便捷的文件互传工具&#xff0c;支持在线快速传输各种文件格式&#xff0c;无需注册&#xff0c;直接分享文件。适用于个人和团队间的文件共享&#xff0c;跨平台支持&#xff0c;轻松解决文件传输问题。免费的文件传输服务&#xff0c;让你的工作更高效。 gotool

算法题(81):询问学号

审题&#xff1a; 需要我们根据给出的n值确定录入数据个数&#xff0c;然后根据给出的数据存储学号。再根据m值确定需要输出的学号个数&#xff0c;然后根据数组内容输出学号 思路: 我们可以利用数组进行数据顺序存储&#xff0c;以及随机读取完成本题 由于学号最大为1e9&#…

(转)Java多态`

Base是父类&#xff0c;Sub是子类。 Base b new Sub(); b.out(); b持有的是子类Sub的实例&#xff0c;调用的是子类的方法。

JavaWeb后端基础(3)

原打算把Mysql操作数据库的一些知识写进去&#xff0c;但是感觉没必要&#xff0c;要是现在会的都是简单的增删改查&#xff0c;所以&#xff0c;这一篇&#xff0c;我直接从java操作数据库开始写&#xff0c;所以这一篇大致就是记一下JDBC、MyBatis、以及SpringBoot的配置文件…

Selenium自动化测试秘籍:解锁常用函数实战指南

目录 1.元素的定位 2.操作测试对象 2.1.点击/提交对象 2.2.模拟按键输入 2.3.清除文本内容 2.4.获取文本信息&#xff1a; 特殊情况&#xff1a;元素属性值 获取当前页面标题和URL方法&#xff1a; 3. 窗口 3.1.切换窗口&#xff1a; 3.2.窗口大小的设置 4.屏幕截图…

Linux操作系统5-进程信号1(信号基础)

上篇文章&#xff1a;Linux操作系统4-进程间通信5&#xff08;共享内存实现两个进程通信&#xff09;-CSDN博客 本篇Gitee仓库&#xff1a;myLerningCode/l25 橘子真甜/Linux操作系统与网络编程学习 - 码云 - 开源中国 (gitee.com) 本篇重点&#xff1a;信号的概念 一. 信号基…

【博资考4】网安学院-硕转博考试内容

【博资考4】硕转博考试内容 - 网络安全与基础理论 写在最前面一. **21年硕转博面试内容回顾**网络、逆向、操作系统、攻防、漏洞1. **网络安全常见攻击方式及其防范措施**1.1 **DDoS攻击&#xff08;分布式拒绝服务&#xff09;**1.2 **SQL注入攻击**1.3 **XSS攻击&#xff08;…

考研/保研复试英语问答题库(华工建院)

华南理工大学建筑学院保研/考研 英语复试题库&#xff0c;由华工保研er和学硕笔试第一同学一起整理&#xff0c;覆盖面广&#xff0c;助力考研/保研上岸&#xff01;需要&#x1f447;载可到文章末尾见小&#x1f360;。 以下是主要内容&#xff1a; Part0 复试英语的方法论 Pa…

TCP基本入门-简单认识一下什么是TCP

部分内容来源&#xff1a;小林Coding TCP的特点 1.面向连接 一定是“一对一”才能连接&#xff0c;不能像 UDP 协议可以一个主机同时向多个主机发送消息&#xff0c;也就是一对多是无法做到的 2.可靠的 无论的网络链路中出现了怎样的链路变化&#xff0c;TCP 都可以保证一个…