Django 学习笔记(Day1)

「写在前面」

本文为千锋教育 Django 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。


目录

  • 0 课程介绍
  • 1 Django 快速入门
    • 1.1 Django 介绍
    • 1.2 Django 安装
    • 1.3 创建 Django 项目
    • 1.4 运行 Django 项目
    • 1.5 数据迁移
    • 1.6 创建应用App
    • 1.7 视图Views
    • 1.8 路由Route
    • 1.9 模型Model
    • 1.10 后台管理Admin

0 课程介绍

P1:https://www.bilibili.com/video/BV1fh4y1Z7jp?p=1

alt

1 Django 快速入门

1.1 Django 介绍

P2:https://www.bilibili.com/video/BV1fh4y1Z7jp?p=2

Django 官网:https://docs.djangoproject.com/en/4.2/

本教程使用的是 Django 4.2 版本

Django 是一个开放源代码的 Web 应用框架,由 Python 写成。采用了 MTV 的框架模式,即模型 M视图 V模版 T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是 CMS (内容管理系统)软件。并于 2005 年 7 月在 BSD 许可证下发布。这套框架是以比利时的吉普赛爵士吉他手 Django Reinhardt 来命名的。

1.2 Django 安装

P3:https://www.bilibili.com/video/BV1fh4y1Z7jp?p=3

1.3 创建 Django 项目

P4:https://www.bilibili.com/video/BV1fh4y1Z7jp?p=4

创建一个 Django 项目:

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 异步框架)

P5:https://www.bilibili.com/video/BV1fh4y1Z7jp?p=5

settings.py 文件详解:

from pathlib import Path

# 项目根目录
BASE_DIR = Path(__file__).resolve().parent.parent

# 项目的密钥
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',
'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,
'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',
],
},
},
]

# 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'

1.4 运行 Django 项目

P6:https://www.bilibili.com/video/BV1fh4y1Z7jp?p=6

运行 Django 项目:

python manage.py runserver [ip:port]

可以直接进行服务运行,默认执行起来的端口是 8000

也可以自己指定 ip 和端口:

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

1.5 数据迁移

P7:https://www.bilibili.com/video/BV1fh4y1Z7jp?p=7

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

生成迁移文件:

python manage.py makemigrations

执行迁移:

python manage.py migrate

不需要初始化迁移文件夹,每个应用默认有迁移文件夹 migrations

1.6 创建应用App

P8:https://www.bilibili.com/video/BV1fh4y1Z7jp?p=8

创建一个 App:

python manage.py startapp App

创建后需要在 settings.py 中将应用加入到 INSTALLED_APPS 选项中:

INSTALLED_APPS = [
# 定义自己的应用
'App',
]

应用目录介绍:

  • __init__.py:
    • 其中暂无内容,使得 app 成为一个包
  • admin.py:
    • 管理站点模型的声明文件,默认为空
  • apps.py:
    • 应用信息定义文件,在其中生成了 AppConfig,该类用于定义应用名等数据
  • models.py:
    • 添加模型层数据类文件
  • views.py:
    • 定义 URL 相应函数
  • migrations:
    • 自动生成,生成迁移文件的
  • tests.py:
    • 测试代码文件

1.7 视图Views

P9:https://www.bilibili.com/video/BV1fh4y1Z7jp?p=9

user/views.py 文件内容:

from django.shortcuts import render
from django.http import HttpResponse

# 视图函数Views
def index(request):
pass
# 返回相应 response
return HttpResponse('Hello Django!')

# 渲染模板render,渲染html
return render(request, 'index.html')

user/templates/index.html 文件内容:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>首页</h2>
<hr>

<h4>Hello Django!</h4>

</body>
</html>

DjangoPro2/urls.py 文件内容:

from django.contrib import admin
from django.urls import path
from user.views import *

urlpatterns = [
# 路由url
# 直接访问视图函数,没有使用子路由
path('index/', index),

path('admin/', admin.site.urls),
]

访问 127.0.0.1:8000/index/ 返回 index.html 内容

P10:https://www.bilibili.com/video/BV1fh4y1Z7jp?p=10

HTTP 协议前后端交互:

alt

P11:https://www.bilibili.com/video/BV1fh4y1Z7jp?p=11

Django 框架流程:

alt

1.8 路由Route

P12:https://www.bilibili.com/video/BV1fh4y1Z7jp?p=12

使用子路由

DjangoPro2/urls.py 文件内容:

from django.contrib import admin
from django.urls import path, include
from user.views import *

urlpatterns = [
# 使用子路由
# 一个应用对应一个子路由
path('user/', include('user.urls')),

path('admin/', admin.site.urls),
]

user/urls.py 文件内容:

from django.urls import path
from user.views import *

# 子路由
urlpatterns = [
path('index/', index, name='index'),
path('index2/', index2, name='index2'),
]

user/views.py 文件内容:

from django.http import HttpResponse

def index(request):
return HttpResponse('Index')

def index2(request):
return HttpResponse('Index2')

访问 127.0.0.1:8000/user/index/ 返回 Index
访问 127.0.0.1:8000/user/index2/ 返回 Index2

1.9 模型Model

P13:https://www.bilibili.com/video/BV1fh4y1Z7jp?p=13

user/models.py 文件内容:

from django.db import models

# 模型Model <==> 表结构
# 类属性 <==> 表字段
# 对象 <==> 表的一行记录
class UserModel(models.Model):
name = models.CharField(max_length=30, unique=True) # 对应的SQL: name varchar(30)
age = models.IntegerField(default=18) # 对应的SQL: age int defalut 18
sex = models.CharField(max_length=20) # 对应的SQL: sex varchar(20)
is_deleted = models.BooleanField(default=False)

执行数据迁移:

python manage.py makemigrations

python manage.py migrate

会在数据库中生成一张名为 user_usermodel 的表,给表中添加数据:

alt

user/views.py 文件内容:

from django.shortcuts import render
from user.models import *

def get_users(request):
# 模型操作;获取所有user
users = 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>

user/urls.py 文件内容:

from django.urls import path
from user.views import *

# 子路由
urlpatterns = [
path('users/', get_users, name='users'),
]

访问 127.0.0.1:8000/user/users/ 返回:

alt

1.10 后台管理Admin

P14:https://www.bilibili.com/video/BV1fh4y1Z7jp?p=14

后台管理系统的使用步骤:

  1. 在 user/admin.py 文件中注册对应的模型
from django.contrib import admin
from user.models import *

admin.site.register(UserModel)
  1. 需要创建超级管理员的账号和密码
python manage.py createsuperuser
  1. 根路由 DjangoPro2/urls.py 中添加
from django.contrib import admin
from django.urls import path

urlpatterns = [
path('admin/', admin.site.urls),
]
  1. 访问后台管理系统:http://127.0.0.1:8000/admin/

「结束」

注:本文为个人学习笔记,仅供大家参考学习,不得用于任何商业目的。如有侵权,请联系作者删除。

alt

本文由 mdnice 多平台发布

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

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

相关文章

【C#】.net core 6.0 使用第三方日志插件Log4net,日志输出到控制台或者文本文档

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…

【C++】stack/queue

链表完了之后就是我们的栈和队列了&#xff0c;当然我们的STL中也有实现&#xff0c;下面我们先来看一下简单用法&#xff0c;跟我们之前C语言实现的一样&#xff0c;stack和queue有这么几个重要的成员函数 最主要的就是这么几个&#xff1a;empty&#xff0c;push&#xff0c;…

python读取大型csv文件,降低内存占用,提高程序处理速度

文章目录 简介读取前多少行读取属性列逐块读取整个文件总结参考资料 简介 遇到大型的csv文件时&#xff0c;pandas会把该文件全部加载进内存&#xff0c;从而导致程序运行速度变慢。 本文提供了批量读取csv文件、读取属性列的方法&#xff0c;减轻内存占用情况。 import pand…

git commit --amend

git commit --amend 1. 修改已经输入的commit 1. 修改已经输入的commit 我已经输入了commit fix: 删除无用代码 然后现在表示不准确&#xff0c;然后我通过命令git commit --amend修改commit

鼓楼夜市管理wpf+sqlserver

鼓楼夜市管理系统wpfsqlserver 下载地址:鼓楼夜市管理系统wpfsqlserver 说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于C#wpf架构和sql server数据库 功能模块&#xff1a; 登录注册 鼓楼夜市管理系统主界面所有店铺信…

企业电子招投标系统源码-从源码到实践:深入了解鸿鹄电子招投标系统与电子招投标

在数字化采购领域&#xff0c;企业需要一个高效、透明和规范的管理系统。通过采用Spring Cloud、Spring Boot2、Mybatis等先进技术&#xff0c;我们打造了全过程数字化采购管理平台。该平台具备内外协同的能力&#xff0c;通过待办消息、招标公告、中标公告和信息发布等功能模块…

Tictoc3例子

在tictoc3中&#xff0c;实现了让 tic 和 toc 这两个简单模块之间传递消息&#xff0c;传递十次后结束仿真。 首先来介绍一下程序中用到的两个函数&#xff1a; 1.omnetpp中获取模块名称的函数 virtual const char *getName() const override {return name ? name : "&q…

Python 一步一步教你用pyglet制作汉诺塔游戏(终篇)

目录 汉诺塔游戏 完整游戏 后期展望 汉诺塔游戏 汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;是一个源于印度古老传说的益智玩具。这个传说讲述了大梵天创造世界的时候&#xff0c;他做了三根金刚石柱子&#xff0c;并在其中一根柱子上从下往上按照大小顺序摞…

js【详解】Promise

为什么需要使用 Promise &#xff1f; 传统回调函数的代码层层嵌套&#xff0c;形成回调地狱&#xff0c;难以阅读和维护&#xff0c;为了解决回调地狱的问题&#xff0c;诞生了 Promise 什么是 Promise &#xff1f; Promise 是一种异步编程的解决方案&#xff0c;本身是一个构…

套接字的地址结构,IP地址转换函数,网络编程的接口

目录 一、套接字的地址结构 1.1 通用socket地址结构 1.2 专用socket地址结构 1.2.1 tcp协议族 1.2.3 IP协议族 二、IP地址转换函数 三、网络编程接口 3.1 socket() 3.2 bind() 3.3 listen() 3.4 accept() 3.5 connect() 3.6 close() 3.7 recv()、send() 3.8 recv…

手写简易操作系统(五)--获得物理内存容量

前情提要 上一章中我们进入了保护模式&#xff0c;并且跳转到了32位模式下执行。这一章较为简单&#xff0c;我们来获取物理内存的实际容量。 一、获得内存容量的方式 在Linux中有多种方法获取内存容量&#xff0c;如果一种方法失败&#xff0c;就会试用其他方法。其本质上是…

考研数学|汤家凤《1800》vs 张宇《1000》,怎么选?

汤家凤的1800题和张宇的1000题都是备考数学考研的热门选择&#xff0c;但究竟哪个更适合备考呢&#xff1f;下面分享一些见解。 首先&#xff0c;让我们来看看传统习题册存在的一些问题。虽然传统习题册通常会覆盖考试的各个知识点和题型&#xff0c;但其中一些问题在于它们可…

JDBC连接MysqL

import java.sql.*;public class Demo {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1.注册驱动&#xff0c;加载驱动&#xff1b;Class.forName("com.mysql.jdbc.Driver");//2.获得连接,返回connection类型的对象&…

汤唯短发造型:保留经典和适合自己的风格,也许才是最重要的

汤唯短发造型&#xff1a;保留经典和适合自己的风格&#xff0c;也许才是最重要的 汤唯短发造型登上Vogue四月刊封面&#xff0c;引发网友热议。#李秘书讲写作#说说是怎么回事&#xff1f; 这次Vogue四月刊的封面大片&#xff0c;汤唯以一头短发亮相&#xff0c;身穿五颜六色的…

钉钉平台“智”领宠物界,开启萌宠智能新时代!

在当前数字化转型的浪潮中&#xff0c;钉钉用便捷的数字化解决方案推动了宠物业界的智能升级。一家宠物用品公司采用无雀科技数字化管理系统&#xff0c;与钉钉平台结合&#xff0c;解决了小型企业普遍存在的财务管理不清晰、业务流程不规范、客户信息核对繁琐等痛点问题。 针对…

一周学会Django5 Python Web开发-Django5内置模板引擎-模板继承

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

Linux中文件的权限

我们首先需要明白&#xff0c;权限 用户角色 文件的权限属性 一、拥有者、所属组和other&#xff08;用户角色&#xff09; 以文件file1为例 第一个箭头所指处即是文件的拥有者&#xff0c;拥有者为zz 第二个箭头所指处即使文件的所属组&#xff0c;所属组为zz 除去拥有者…

嵌入式系统工程师错题总结

笔者来介绍一下嵌入式系统工程师考试的一些易错题目 题目介绍  流水线指令计算公式&#xff1a;一条指令总时间max&#xff08;单个指令执行时间&#xff09;*&#xff08;指令数-1&#xff09;  平均故障间隔时间  ICMP协议&#xff1a;传送通信问题相关的消息。 …

电脑打开应用慢

电脑打开什么应用都很慢 我的电脑是i73060&#xff0c;但是打开应用很慢 解决办法&#xff1a; 在注册表[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\Policy]将"VerifiedAndReputablePolicyState"的值设置为0&#xff0c;如果没有这一项&#xff0c;就…

SPI、Spring SPI、SpringFactoriesLoader

一、SPI技术 SPI全名Service Provider interface&#xff0c;翻译过来就是“服务提供接口”&#xff0c;再说简单就是提供某一个服务的接口&#xff0c; 提供给服务开发者或者服务生产商来进行实现。 Java SPI 是JDK内置的一种动态加载扩展点的实现。 这个机制在一般的业务代…