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 HttpResponse

from user.models import *


#  视图函数Views
def index(request):# 需要有一个形参
    pass
    # 返回相应response
    return 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 18
    sex = 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,渲染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})



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之旅吧!

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

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

相关文章

【并发】CAS原子操作

1. 定义 CAS是Compare And Swap的缩写&#xff0c;直译就是比较并交换。CAS是现代CPU广泛支持的一种对内存中的共享数据进行操作的一种特殊指令&#xff0c;这个指令会对内存中的共享数据做原子的读写操作。其作用是让CPU比较内存中某个值是否和预期的值相同&#xff0c;如果相…

C#与VisionPro联合开发——串口通信

串口通信 串口通信是一种常见的数据传输方式&#xff0c;通过串行接口&#xff08;串口&#xff09;将数据以串行比特流的形式进行传输。在计算机和外部设备之间&#xff0c;串口通信通常是通过串行通信标准&#xff08;如RS-232&#xff09;来实现的。串口通信可以用于连接各…

AtCoder ABC342 A-D题解

华为出的比赛&#xff1f; 好像是全站首个题解哎&#xff01; 比赛链接:ABC342 Problem A: 稍微有点含金量的签到题。 #include <bits/stdc.h> using namespace std; int main(){string S;cin>>S;for(int i0;i<s.size();i){if(count(S.begin(),S.end(),S[i…

《穿越火线:枪战王者》手游客户端技术方案: 实时同步与手感优化 转载

一、项目背景 CF手游的团队有着相当丰富的FPS游戏制作经验&#xff0c;但是移动端开发经验相对匮乏。团队面对的挑战很大&#xff0c;我们需要在手机端完美还原CF十多个游戏模式&#xff0c;上百把枪械手感。 虽然我们有实时对战FPS游戏开发经验&#xff0c;但是手游网络质量…

H5获取手机相机或相册图片两种方式-Android通过webview传递多张照片给H5

需求目的&#xff1a; 手机机通过webView展示H5网页&#xff0c;在特殊场景下&#xff0c;需要使用相机拍照或者从相册获取照片&#xff0c;上传后台。 完整流程效果&#xff1a; 如下图 一、H5界面样例代码 使用html文件格式&#xff0c;文件直接打开就可以展示布局&#…

从源码学习单例模式

单例模式 单例模式是一种设计模式&#xff0c;常用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点。这意味着无论在程序的哪个地方&#xff0c;只能创建一个该类的实例&#xff0c;而不会出现多个相同实例的情况。 在单例模式中&#xff0c;常用的实现方式包括懒汉…

【C语言】linux内核ipoib模块 - ipoib_send

一、中文注释 int ipoib_send(struct net_device *dev, struct sk_buff *skb,struct ib_ah *address, u32 dqpn) {struct ipoib_dev_priv *priv ipoib_priv(dev); // 获取IPoIB设备的私有数据struct ipoib_tx_buf *tx_req; // 发送请求结构体int hlen, rc; // 分别为头部长度…

安装 WSL 报错 Error code: Wsl/WININET_E_NAME_NOT_RESOLVED 问题解决

问题描述 在执行 wsl --install 安装Windows子系统Linux WSL (Windows Subsystem for Linux) 时报错&#xff1a; 无法从“https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json”中提取列表分发。无法解析服务器的名称或地址 Error…

如何在本地电脑部署HadSky论坛并发布至公网可远程访问【内网穿透】

文章目录 前言1. 网站搭建1.1 网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3 Cpolar稳定隧道&#xff08;本地设置&#xff09;2.4 公网访问测试 总结 前言 经过多年的基础…

2000-2022年上市公司全要素生产率测算数据合计(原始数据+计算代码+结果)(LP法+OLS法+GMM法+固定效应法)

2000-2022年上市公司全要素生产率测算数据合计&#xff08;原始数据计算代码结果&#xff09;&#xff08;LP法OLS法GMM法固定效应法&#xff09; 1、时间&#xff1a;2000-2022年 2、范围&#xff1a;上市公司 3、指标&#xff1a;证券代码、证券简称、统计截止日期、固定资…

怎么自学python,大概要多久?python多久上手?

无限时长~~~~技术不断在更新&#xff0c;你的自学不也需要一直进行吗&#xff1f; 但如果是问&#xff1a;自学多长时间可以入门&#xff1f;或者可以找到工作&#xff1f;那我可以告诉你答案。 从零基础开始自学Python&#xff0c;依照每个人理解能力的不同&#xff0c;大致…

免费的WP模板网站推荐

免费wordpress模板下载 高端大气上档次的免费wordpress主题&#xff0c;首页大图全屏显示经典风格的wordpress主题。 https://www.wpniu.com/themes/289.html wordpress免费企业主题 深蓝色经典实用的wordpress网站模板&#xff0c;用wordpress免费企业主题搭建网站。 http…

Linux进程【补充】

文章目录 进程概念task_struct 进程创建forkvfork写时拷贝 进程状态僵尸进程孤儿进程守护进程 进程地址空间是什么为什么怎么做 进程概念 进程是一个程序的执行实例或者是担当系统资源分配的实体。当一个程序运行时&#xff0c;被从硬盘加载到内存中&#xff0c;操作系统为每个…

python 线程笔记一 (概念+示例代码)

1. 线程的概念 线程&#xff0c;可简单理解为是程序执行的一条分支&#xff0c;也是程序执行流的最小单元。线程是被系统独立调度和分派的基本单位&#xff0c;线程自己不拥有系统资源&#xff0c;只拥有一点儿在运行中必不可少的资源&#xff0c;但它可与同属于一个进程的其它…

第10届蓝桥杯Scratch图形化编程 选拔赛初级组编程题1:小猫走城堡

准备工作: 导入育最库中的“Castle 3 小猫从坐标点(-165&#xff0c;-93)出发向城堡走去。随着位置的移动&#xff0c;角色大小逐渐变小&#xff0c;最后在城堡前消失。注意1.角色大小在逐渐变化&#xff0c;运行结束再次点击绿旗&#xff0c;程序应还能再次扶行。2.角色应该是…

云原生之API网关Traefik

1. 前言 说到web服务的开源网关&#xff0c;我首先想到的是Nginx&#xff0c;最早使用的就是它&#xff0c;现在都还在使用它。系统上线了Docker Swarm集群之后&#xff0c;不继续使用Nginx直接做Docker服务的网关&#xff0c;是因为Nginx毕竟比Docker Swarm出现的早&#xff0…

YOLOv7基础 | 第2种方式:简化网络结构之yolov7.yaml(由104层简化为30层)

前言:Hello大家好,我是小哥谈。通过下载YOLOv7源码可知,原始的yolov7.yaml文件是拆开写的,比较混乱,也不好理解,并且为后续改进增添了很多困难。基于此种情况,笔者就给大家介绍一种将yolov7.yaml文件简化的方法,将104层简化为30层,并且参数量和计算量和原来是一致的,…

✅鉴权—cookie、session、token、jwt、单点登录

基于 HTTP 的前端鉴权背景cookie 为什么是最方便的存储方案&#xff0c;有哪些操作 cookie 的方式session 方案是如何实现的&#xff0c;存在哪些问题token 是如何实现的&#xff0c;如何进行编码和防篡改&#xff1f;jwt 是做什么的&#xff1f;refresh token 的实现和意义ses…

pythonJax小记(五):python: 使用Jax深度图像(正交投影和透视投影之间的转换)(持续更新,评论区可以补充)

python: 使用Jax深度图像&#xff08;正交投影和透视投影之间的转换&#xff09; 前言问题描述1. 透视投影2. 正交投影 直接上代码解释1. compute_projection_parameters 函数a. 参数解释b. 函数计算 2. ortho_to_persp 函数a. 计算投影参数&#xff1a;b. 生成像素坐标网格&am…

protobuf简单使用(二)

介绍 上一节中&#xff0c;我们介绍了protobuf&#xff0c;简单来说&#xff0c;它是一种消息数据格式&#xff0c;其作用类似于json&#xff0c;但是比json的使用效率要高。 除此以外&#xff0c;我们介绍了protobuf的简单使用&#xff0c;也就是如何可以像使用json一样&…