Django入门指南:从环境搭建到模型管理系统的完整教程

环境安装:

​ 由于我的C的Anaconda 是安装在C盘的,但是没内存了,所有我将环境转在e盘,下面的命令是创建环境到指定目录中.

conda create --prefix=E:\envs\dj42  python=3.9

在这里插入图片描述

在这里插入图片描述

进入环境中:

conda activate  E:\envs\dj42

在这里插入图片描述

pip install django==4.2 -i  https://pypi.tuna.tsinghua.edu.cn/simple/

在这里插入图片描述

pip show django

查看安装情况:

在这里插入图片描述

查看安装版本情况:

pip freeze

在这里插入图片描述

创建项目:

命令行创建:
django-admin startproject HelloDjango 

在这里插入图片描述

项目结构:

在这里插入图片描述

专业版创建:

在这里插入图片描述

在这里插入图片描述

项目结构:

  • manage.py:
    -  是Django⽤于管理本项⽬的命令⾏⼯具,之后进⾏站点运⾏,数据库⾃动⽣成等都是通过本⽂件完成。HelloDjango/ init .py:
    - 告诉python该⽬录是⼀个python包,暂⽆内容,后期⼀些⼯具的初始化可能会⽤到HelloDjango/settings.py:· Django项⽬的配置⽂件,默认状态其中定义了本项⽬引⽤的组件,项⽬名,数据库,静态资源等。HelloDjango/urls.py:
    - 维护项⽬的URL路由映射,即定义当客户端访问时由哪个模块进⾏响应。HelloDjango/wsgi.py:
    - 全称为Python Web Server Gateway Interface,即Python服务器⽹关接⼝,是Python应⽤与Web服务器之间的接⼝,⽤于Django项⽬在服务器上的部署和上线,⼀般不需要修改。HelloDjango/asgi.py:
    - 定义ASGI的接⼝信息,和WSGI类似,在3.0以后新增ASGI, 相⽐WSGI, ASGI实现了异步处理, ⽤于启动异步通信服务,⽐如:实现在线聊天等异步通信功能。(类似Tornado异步框架)
    

Django组件:

  • 基本设置文件/路由系统
  • M(模型层)V(模板层)T(视图层)
  • cookies和session
  • 分页及发送邮件
  • 后果管理系统

基本操作:

配置文件:

项目配置文件讲解:

setting.py

from pathlib import Path# 项目根目录
# Path(__file__) 就是当前文件的绝对路径
BASE_DIR = Path(__file__).resolve().parent.parent# 项目的密钥
# 用于加密处理 在flask中需要自己写
SECRET_KEY = 'django-insecure-@o$)(@-s)t(jenz*5wbs^7-tohe)(d=equv7k3t4at6&2p9v_3'# 是否调试模式
#  True: 表示调试模式,自动重启,一般用于开发过程中
#  False: 表示非调试模式,一般用于上线部署
DEBUG = True
# 被允许的域名或IP
#   *  : 表示通配符,匹配所有的IP,表示可以被其他任何电脑来访问我(局域网)
#  上线后可以指定其他哪些服务器来访问我
ALLOWED_HOSTS = ['*']# 定义应用
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',# 定义自己的应用'user', # 'user.apps.UserConfig','App',
]# 中间件
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]# 根路由
ROOT_URLCONF = 'DjangoPro2.urls'# 模板
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [],'APP_DIRS': True, #每一个app都可以设置一个templates文件夹'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]
# 其实创建django项目的时候,会自动创建一个templates文件夹,但是后期开发中我们一般不使用全局的templates文件夹,一般使用每一个应用下的templates文件夹# wsgi目录
WSGI_APPLICATION = 'DjangoPro2.wsgi.application'# Database 数据库
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3',}
}# 密码验证
AUTH_PASSWORD_VALIDATORS = [{'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',},{'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',},{'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',},{'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',},
]# 国际化 地区语言配置等
LANGUAGE_CODE = 'zh-hans'  # en-us英语,zh-hans中文
TIME_ZONE = 'UTC'
USE_I18N = True
USE_TZ = True# 静态文件 (CSS, JavaScript, Images)
STATIC_URL = 'static/'# 默认的主键字段类型
# Default primary key field type
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

在这里插入图片描述

项目启动:
python manage.py runserver [ip:port]

可以直接进⾏服务运⾏ 默认执⾏起来的端⼝是8000

也可以⾃⼰指定ip和端⼝:

1.监听机器所有可⽤ ip (电脑可能有多个内⽹ip或多个外⽹ip):
python manage.py runserver 0.0.0.0:8000
2.同时在settings.py中将
ALLOWED_HOSTS=['*']
3.在其他局域⽹电脑上可以通过在浏览器输⼊ Django项⽬所在电脑的 IP:8000 来访问
python manage.py runserver

该端口:

python manage.py runserver 8000
python manage.py runserver 0.0.0.0:8001

在这里插入图片描述

在这里插入图片描述

数据迁移:

迁移的概念: 就是将模型映射到数据库的过程

⽣成迁移⽂件:  python manage.py makemigrations
执⾏迁移:  python manage.py migrate

不需要初始化迁移⽂件夹,每个应⽤默认有迁移⽂件夹migrations。

在这里插入图片描述

在这里插入图片描述

创建应用:
python manage.py startapp App(就是名字)

在这里插入图片描述

创建名称为App的应⽤

使⽤应⽤前需要将应⽤配置到项⽬中,在settings.py中将应⽤加⼊到INSTALLED_APPS选项中,进去应用的注册。

应⽤⽬录介绍:init .py:
其中暂⽆内容,使得app成为⼀个包
admin.py:
管理站点模型的声明⽂件,默认为空
apps.py:
应⽤信息定义⽂件,在其中⽣成了AppConfig,该类⽤于定义应⽤名等数据
models.py:
添加模型层数据类⽂件
views.py:
定义URL相应函数,视图函数
migrations包:
⾃动⽣成,⽣成迁移⽂件的

在这里插入图片描述

视图函数:

这里想特别说明一点,就是路由和映射函数。

在这里插入图片描述

urls.py文件

from django.contrib import admin
from django.urls import path, include
from user.views import *
urlpatterns = [path("admin/", admin.site.urls),# 路由url# 直接访问视图函数,没有使用子路由path('index/', index),path('index2/', index2),# 使用子路由# #   一个应用对应一个子路由# path('user/', include('user.urls')),## path('admin/', admin.site.urls),
]

user应用下的views.py

from django.shortcuts import render# Create your views here.from django.shortcuts import render
from django.http import HttpResponsefrom user.models import *#  视图函数Views
def index(request):# 需要有一个形参pass# 返回相应responsereturn HttpResponse('Hello Django!')# 渲染模板render,渲染html# return render(request, 'index.html')# 视图函数2
def index2(request):return HttpResponse('Index2')# # 视图函数3
# def get_users(request):
#     # 模型操作;获取所有user
#     users = UserModel.objects.all()
#     return render(request, 'users.html', {'users': users})
#

在这里插入图片描述

框架流程:

在这里插入图片描述

路由:

我将自带的文档翻译了一下:
urlpatters列表将URL路由到视图。有关更多信息,请参阅:
https://docs.djangoproject.com/en/4.2/topics/http/urls/

  • 函数视图
    添加导入:从my_app导入视图
    将URL添加到URL模式:路径(“”,views.home,name=‘home’)
  • -基于类的视图
    添加导入:从other_app.views导入主页
    将URL添加到URL模式:path(‘’,Home.as_view(),name=‘Home’)
  • 包括另一个URLconf
    导入include()函数:从django.url导入include,路径
    将URL添加到urlpatters:path(‘blog/’,include(‘blog.urls’))

项目工程下的urls.py

from django.contrib import admin
from django.urls import path, include
from user.views import *
urlpatterns = [path("admin/", admin.site.urls),# 使用子路由#   一个应用对应一个子路由path('user/', include('user.urls')),path('admin/', admin.site.urls),
]

子路由就是使用应用中的urls.py,当然了我们需要自己创建.

在这里插入图片描述

在这里插入图片描述

我们发现这里特别想flask中的blueprint就是蓝图函数.

模板:

模板实际上就是我们⽤HTML写好的⻚⾯

创建模板⽂件夹templates, 在模板⽂件夹中创建模板⽂件

在views中去加载渲染模板, 使⽤render函数: return render(request,'index.html')

模型:

在models.py 中引⼊models

from django.db import models

创建⾃⼰的模型类,但切记要继承⾃ models.Model!

模型Model   <==>  表结构
类属性     <==>  表字段
对象       <==>  表的一行记录
class UserModel(models.Model):name = models.CharField(max_length=30, unique=True)  # 对应的SQL: name varchar(30) unique 唯一age = models.IntegerField(default=18)   # 对应的SQL: age int defalut 18sex = models.CharField(max_length=20)   # 对应的SQL: sex varchar(20)is_deleted = models.BooleanField(default=False)def __str__(self): # 重新定义魔法方法 打印对象会重构# 后台管理会显示 return f'{self.name} - {self.age}'
  • CharField 一定要写字符长度限制!

在这里插入图片描述

数据迁移:

数据迁移:models表结构一旦改变就需要重新数据迁移。(同步改变)

迁移的概念: 就是将模型映射到数据库的过程。

# 生成迁移文件:  python manage.py makemigrations
# 执行迁移:  python manage.py migrate

在这里插入图片描述

在这里插入图片描述

创建模拟数据:

在这里插入图片描述

from django.shortcuts import render
# Create your views here.
from django.shortcuts import render
from django.http import HttpResponse
from user.models import * # 导入所有模型#  视图函数Views
def index(request):# 需要有一个形参pass# 渲染模板render,渲染htmlreturn render(request, 'index.html')# 视图函数2
def index2(request):return HttpResponse('Index2')# 视图函数3
def get_users(request):# 模型操作;获取所有userusers = UserModel.objects.all()return render(request, 'users.html', {'users': users})

user/templates/users.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>所有用户</title>
</head>
<body><h2>所有用户</h2><hr><ul>{% for user in users %}<li>{{ user.name }},{{ user.age }}</li>{% endfor %}</ul></body>
</html>

在这里插入图片描述

后台管理:

在这里插入图片描述

在admin.py中将model加⼊后台管理:

from django.contrib import admin
from user.models import *admin.site.register(UserModel)

后台管理系统的使用:

  1. 在这里注册对应的模型
  2. 需要创建超级管理员的账号和密码: python manage.py createsuperuser
  3. 根路由urls.py中添加: path(‘admin/’, admin.site.urls),
  4. 访问后台管理系统:http://127.0.0.1:8000/admin/
在admin.py中将model加⼊后台管理:admin.site.register(Grade)
创建超级⽤户:python manage.py createsuperuser
访问admin后台:http://127.0.0.1:8000/admin/

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

总结:

本教程旨在帮助初学者快速入门Django框架,并掌握其基本操作和核心概念。我们详细介绍了以下内容:

  1. 环境安装:我们指导了读者如何安装Django及其相关依赖,确保他们可以顺利开始使用该框架。
  2. 创建项目两种方式:我们介绍了通过Django命令行工具和手动创建项目两种方式,帮助读者理解项目结构和配置文件的作用。
  3. 项目结构和常用基本操作:我们解释了Django项目的目录结构,并介绍了常用的基本操作,如创建应用、管理静态文件和数据库设置等。
  4. 项目启动和数据迁移:我们演示了如何启动Django开发服务器,并详细说明了数据迁移的过程,以确保数据库与模型的同步。
  5. 创建应用、视图函数和模板:我们引导读者学习如何创建Django应用程序,并编写视图函数和模板,实现页面的渲染和交互。
  6. 路由和模型:我们讲解了Django的URL路由系统,帮助读者理解如何将URL映射到相应的视图函数。此外,我们还介绍了模型的概念和使用方法,以便读者能够操作数据库。
  7. 后台管理系统:最后,我们介绍了Django提供的强大的后台管理系统,使读者能够轻松管理数据模型和内容。

686)]

[外链图片转存中…(img-S4zpRO9v-1708504693686)]

总结:

本教程旨在帮助初学者快速入门Django框架,并掌握其基本操作和核心概念。我们详细介绍了以下内容:

  1. 环境安装:我们指导了读者如何安装Django及其相关依赖,确保他们可以顺利开始使用该框架。
  2. 创建项目两种方式:我们介绍了通过Django命令行工具和手动创建项目两种方式,帮助读者理解项目结构和配置文件的作用。
  3. 项目结构和常用基本操作:我们解释了Django项目的目录结构,并介绍了常用的基本操作,如创建应用、管理静态文件和数据库设置等。
  4. 项目启动和数据迁移:我们演示了如何启动Django开发服务器,并详细说明了数据迁移的过程,以确保数据库与模型的同步。
  5. 创建应用、视图函数和模板:我们引导读者学习如何创建Django应用程序,并编写视图函数和模板,实现页面的渲染和交互。
  6. 路由和模型:我们讲解了Django的URL路由系统,帮助读者理解如何将URL映射到相应的视图函数。此外,我们还介绍了模型的概念和使用方法,以便读者能够操作数据库。
  7. 后台管理系统:最后,我们介绍了Django提供的强大的后台管理系统,使读者能够轻松管理数据模型和内容。

通过本教程,读者将掌握Django框架的基础知识,并能够使用它构建简单而强大的Web应用程序。无论是初学者还是有一定经验的开发者,都能从本教程中获得实用的技能和知识,为他们的项目开发之旅奠定坚实的基础。开始你的Django之旅吧!

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

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

相关文章

一周学会Django5 Python Web开发-Http请求HttpRequest请求类

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计25条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

lxml库和Xpath提取网页数据的基础与实战:完整指南与实战【第92篇—提取网页】

使用lxml库和Xpath提取网页数据的基础与实战 在网络爬虫和数据抓取中&#xff0c;从网页中提取所需信息是一项常见的任务。lxml库和Xpath是Python中用于解析和提取HTML/XML数据的强大工具。本文将介绍lxml库的基础知识&#xff0c;以及如何使用Xpath表达式来准确地提取网页数据…

[HTML]Web前端开发技术30(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 目录 前言 网页标题:手机批发业务-商品备选区<

Swift Combine 使用 handleEvents 操作符调试管道 从入门到精通二十五

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

【GO语言卵细胞级别教程】07.捕获异常和自定义错误

【GO语言卵细胞级别教程】07.捕获异常和自定义错误 &#x1f970;博主&#xff1a;GokuCode &#x1f970;微信公众号&#xff1a;【给点知识】分享小知识&#xff0c;快速成长,欢迎关注呀&#xff01;&#xff08;底部点击二维码&#xff09; &#x1f970;本项目演示代码仓库…

Windows Server 2012 IIS中发布ASP.NET CORE项目

服务器安装IIS&#xff1a; 微软官网下载SDK&#xff1a; 下载Runtime官网&#xff1a;https://dotnet.microsoft.com/download/dotnet-core 安装成功重启IIS&#xff1a; VS发布项目&#xff1a;

分享:如何做好Temu跨境电商项目的几点方法

Temu跨境电商项目作为中国电商巨头拼多多旗下的新兴跨境电商平台&#xff0c;近年来发展迅速&#xff0c;吸引了大量国内卖家参与。然而&#xff0c;由于跨境电商的复杂性和竞争激烈&#xff0c;如何在Temu平台上成功运营&#xff0c;实现良好的销售业绩&#xff0c;成为许多卖…

Chiplet技术与汽车芯片(二)

目录 1.回顾 2.Chiplet的优势 2.1 提升芯片良率、降本增效 2.2 设计灵活&#xff0c;降低设计成本 2.3 标准实行&#xff0c;构建生态 3.Chiplet如何上车 1.回顾 上一篇&#xff0c;我们将来芯粒到底是什么东西&#xff0c;本篇我们来看芯粒技术的优势&#xff0c;以及它…

软考39-上午题-【数据库】-关系代数运算1-传统的集合运算

一、笛卡尔积 二、关系代数 关系代数是施加于关系之上的集合代数运算。 关系代数包含&#xff1a; 传统的集合运算专门的关系运算 2-1、传统的集合运算 1、关系的并 示例&#xff1a; 2、关系的差 示例&#xff1a; 3、关系的交 示例&#xff1a; 关系的并、差、交&#xf…

一 . java语言概述——Java基础篇

一 . java语言概述——Java基础 发展阶段&#xff1a; 发行版本发行时间备注Java 1.01996.01.23Sun公司发布了Java的第一个开发工具包Java 1.11997.02.19JavaOne会议召开&#xff0c;创当时全球同类会议规模之最。Java 1.21998.12.08Java拆分成&#xff1a;J2SE&#xff08;标…

用户头像(图片文件)上传(Vue + nodejs 前后端)

文件上传&#xff08;图片上传&#xff09; 前端&#xff1a;Vue3 element-plus 后端&#xff1a;express 前端 封装一个 Upload 组件和一个 upload 方法。 Upload 组件 <!-- auto-upload 选择好图片后立刻自动上传后端还是手动点击某按钮上传后端 --><el-upload…

jax可微分编程的笔记(3)

jax可微分编程的笔记&#xff08;3&#xff09; 第3章 初识JAX JAX是Google开发的高性能数值计算和自动微分库&#xff0c;提供自动微分 即时编译和矢量并行化三大功能。JAX选择将函数编程的思想贯穿 始终。 简单来说&#xff0c;JAX库是GPU加速&#xff0c;支持自动微分的Nu…

android pdf框架-4,分析barteksc/PdfiumAndroid源码1

关于barteksc/PdfiumAndroid barteksc/PdfiumAndroid 这个源码被,引用的次数是比较高的,flutter的几个pdf库也是引用它.它使用福昕的开源sdk.福昕阅读器我早期的时候用,交互一般,渲染也不如mupdf,有些pdf中文显示不了,体积小点. barteksc/PdfiumAndroid已经是一个完善的sdk了,…

微信小程序开发(实战案例):本地生活 - 列表页面开发(动态渲染处理)、节流防抖(节流阀应用)

文章目录 本地生活 - 列表页面开发一、将九宫格分类换成navigator组件二、动态设置商品列表页的 title三、动态渲染商品列表页面四、上拉触底加载数据五、添加Loading加载效果六、数据加载节流防抖处理 本地生活 - 列表页面开发 导入我们上次写的 本地生活 - 首页开发的项目 运…

leetcode 50. Pow(x, n)

目录 函数定义&#xff1a; 2. 处理特殊情况&#xff1a; 3. 处理负指数&#xff1a; 4. 处理偶数指数&#xff1a; 5. 处理奇数指数&#xff1a; 时间复杂度 空间复杂度 class Solution { public:double myPow(double x, int n) {if(n 0){return 1;}if(n 1) return x…

C#设计模式---工厂方法模式

24种常用设计模式 创建型模式&#xff1a;抽象工厂、生成器、工厂方法、原型、单例&#xff1b; 结构型模式&#xff1a;适配器、桥接、组合、装饰、外观、享元、代理&#xff1b; 行为模式&#xff1a;责任链、命令、迭代器、中介者、备忘录、观察者、状态、策略、模板方法…

二分算法(c++版)

二分的本质是什么&#xff1f; 很多人会认为单调性是二分的本质&#xff0c;但其实其本质并非单调性&#xff0c;只是说&#xff0c;有单调性的可以进行二分&#xff0c;但是有些题目没有单调性我们也可以进行二分。其本质其实是一个边界问题&#xff0c;给定一个条件&#xf…

golang的map是如何扩容的【重点】

具体内容参考链接 https://zhuanlan.zhihu.com/p/616979764 Golang的map就是使用哈希表作为底层实现&#xff0c;map 实际上就是一个指针&#xff0c;指向hmap结构体。 Go 语言中的 map 在扩容时&#xff0c;会重新分配更大的内存空间&#xff0c;并将原有的键值对重新哈希到新…

【机器学习基础】一元线性回归(适合初学者的保姆级文章)

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习 欢迎订阅&#xff01;后面的内容会越来越有意思~ &#x1f4a1;往期推荐&#xff1a; 【机器学习基础】机器学习入门&#xff08;1&#xff09; 【机器学习基…

python 函数-03-参数

入参不需要指定类型&#xff0c;只需要参数名称即可 【特殊性&#xff0c;区别于java c#等】传参两种方式&#xff1a; 位置参数 如 cube_volume(1, 2, 3) 关键字参数 如 cube_volume(width 1, height 2, length 3)参数为可变对象&#xff0c;如当参数为列表时&#xff0c;在…