Django快速入门

news2024/11/26 22:26:42

文章目录

  • 一、安装
    • 1.创建虚拟环境(virtualenv和virtualenvwrapper)
    • 2. 安装django
  • 二、改解释器
  • 三、创建一个Django项目
  • 四、项目目录
    • 项目同名文件夹/settings.py
  • 五、测试服务器启动
  • 六、数据迁移
  • 七、创建应用
  • 八、基本视图
    • 1. 返回响应 response
    • 2. 渲染模板


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

文档推荐看英文,看不懂就换中文吧

在这里插入图片描述

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

2020年,Django 3.0发布。

2022年,Django 4.0发布。Django 4.0 将支持 Python 3.8、3.9与3.10

2023年,Django 4.2LTS发布,长期支持版本,会维护3年,在企业中我们建议使用LTS版本

Django每2年会推出全新的大版本。

在这里插入图片描述
LTS是长期支持版本的意思。

一、安装

1.创建虚拟环境(virtualenv和virtualenvwrapper)

创建虚拟环境

# 先打开cmd
# 安装virtualenv (windows操作系统)
pip install virtualenv virtualenvwrapper-win
# Linux
pip install virtualenv virtualenvwrapper

# workon 查看虚拟环境
workon

# mkvirtualenv 创建新的虚拟环境
mkvirtualenv env

# rmvirtualenv 删除虚拟环境
# rmvirtualenv env

# 进入虚拟环境
workon env

我们来装我们自己的jango

# 创建虚拟环境
mkvirtualenv envdjango4

# 进入虚拟环境
workon envdjango4

2. 安装django

建议使用镜像,安装命令后面最好加一个4.2的版本,可以是4.2.1 也可以是4.2,用的是国内镜像douban,也可以用其他镜像,这样速度会快一些

pip install django==4.2 -i https://pypi.douban.com/simple

4.2是LTS长期支持版本,推荐使用,如果不写则会安装最新版本。

测试django是否安装成功
pip show django

在这里插入图片描述
在这里插入图片描述

pip freeze 会输出所有在本地已安装的包(但不包括 pip、wheel、setuptools 等自带包),若需要输出内容与 pip list 一致,需使用 pip freeze -all
pip list 查看所有的包

在这里插入图片描述

二、改解释器

在这里插入图片描述
点击添加本地解释器
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

选择C:\Users\用户名\Envs\虚拟环境\Scripts\python.exe,点击OK

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

点击OK,等待下面的进度条走完,等他加载完

三、创建一个Django项目

  • 方式一: 进入到指定要存放项目的目录,执行 django-admin startproject MyFirstDjango 来创一个名字为 MyFirstDjango 的工程
    在这里插入图片描述
    创建项目后,默认的目录结构:

在这里插入图片描述

  • 方式二: 使用Pycharm专业版创建Django项目

File > new Project

在这里插入图片描述
在这里插入图片描述

C:\Users\用户名\Envs\虚拟环境\Scripts\python.exe

在这里插入图片描述

点击OK

在这里插入图片描述

创建项目后,目录结构会比第一种方式多一些文件夹:

在这里插入图片描述

四、项目目录

jango项目下面会有一个一样名字的文件夹,还有一些文件,这些东西名字不要去改它。

manage.py :
	· manage是管理的意思,manage.py是用于启动项目或者执行一些命令的文件。
	· 是Django用于管理本项目的命令行工具,之后进行站点运行,数据库自动生成等都是通过本文件完成。

MyDjangoPro2/__init__.py
	· 告诉python该目录是一个python包,方便我们用Python管理,暂无内容,后期一些工具的初始化可能会用到

MyDjangoPro2/settings.py
	· Django项目的配置文件,默认状态其中定义了本项目引用的组件,项目名,数据库,静态资源等
	
MyDjangoPro2/urls.py
	· 维护项目的URL路由映射,即定义当客户端访问时由哪个模块进行响应。
	
MyDjangoPro2/wsgi.py
	· 全称为Python Web Server Gateway Interface,即Python服务器网关接口,是Python应用与Web服务器之间的接口,用于Django项目在服务器上的部署和上线,一般不需要修改。
	
MyDjangoPro2/asgi.py
	· 定义ASGI的接口信息,和WSGI类似,在3.0以后新增ASGI,相比WSGI,ASGI实现了异步处理,用于启动异步通信服务,比如:实现在线聊天等异步通信功能(类似Tornado异步框架)。它是用于存储asgi设定的文件,如果使用ASGI部署django会用到,一般情况下不需要更改。

templates 模板目录

user 就是刚刚设置的应用名称
	· migrations 迁移文件夹,以后迁移文件都会放在这里面
	· admin.py 后台管理系统,如果要配置后台管理系统就需要用到它
	· apps.py 就是当前应用的配置
		里面也没写什么,name = 'user',就是告诉你应用名称是什么
	· models.py 模型,存放模型的地方
	· tests.py 单元测试,如果要写单元测试用例的话可以在这写 
	· views.py 视图,写视图函数都在这里

项目同名文件夹/settings.py

"""
Django settings for MyDjangoPro2 project.

Generated by 'django-admin startproject' using Django 4.2.

这里是他的文档
For more information on this file, see
https://docs.djangoproject.com/en/4.2/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.2/ref/settings/
"""

from pathlib import Path

''' 
    BASE_DIR 项目根目录
    Path(__file__) 当前这个文件的绝对路径
    .parent.parent 父目录的父目录
    Path(__file__).resolve().parent.parent得到的就是项目的路径
    以后我们去找项目目录下的文件或文件夹,就用 BASE_DIR / "子路径"
'''
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

# 快速开始的文档
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/

# SECRET_KEY 项目唯一的密钥,这个是方便它在内部加密、解密处理的时候 用到。
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-5ot-%22ub-!mi#-*hth-ac=dvo^)n1q*kbs+@lrsbv@2e1pq=g'

# SECURITY WARNING: don't run with debug turned on in production!
# 是否使用调试模式,
# True:表示调试模式,自动重启,改了代码不用我们手动重启了,一般用于开发过程;
# False: 表示非调试模式,一般用于上线部署
DEBUG = True

# 被允许的域名或IP
# 写法:
# *:表示通配符,匹配所有IP,也就是所有的IP都能访问我   ALLOWED_HOSTS = ['*']  	表示可以被其他任何电脑来访问我(局域网)
# 上线后可以指定某个IP,指定其他哪些服务器来访问我,如果所有电脑都能访问就是*
## ALLOWED_HOSTS = []
ALLOWED_HOSTS = ['*']

# Application definition
# 定义应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'user.apps.UserConfig',  # 这里也可以直接写上 'user',

    # 我们自己写的应用一定要在这里定义一下,如果不写后面有一些功能会受到限制

    # 定义自己的应用
    # 'user',
]

# 中间件
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',  # 安全处理的,防止csrf攻击
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

# 根路由
ROOT_URLCONF = 'MyDjangoPro2.urls'  # 就是: 项目根目录\MyDjangoPro2\urls.py

# 模板
TEMPLATES = [
    # 可以配置多个模板,一般配置一个模板就可以了
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],  # 指定模板文件夹
        '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的目录: 根目录\MyDjangoPro2\wsgi.py
WSGI_APPLICATION = 'MyDjangoPro2.wsgi.application'

# Database 数据库
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases

DATABASES = {
    'default': {  # 默认情况用到的是sqlite3数据库,经常用在手机端,或者一些小型数据库里面,因为他是单线程的
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',  # 这里路径会放在根目录下面,如果没有,运行之后就有了
    }
    # 注意:我们这里要用的话,只能用关系型数据库。如果用mysql要注意,它还要指定域名,IP、端口、用户名密码
}

# Password validation
# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
# 密码验证的东西,这些都是Django内部的东西
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',
    },
]

# Internationalization 国际化
# https://docs.djangoproject.com/en/4.2/topics/i18n/
# 主要是地区、语言的配置
LANGUAGE_CODE = 'en-us'  # 语言,默认英语en-us, 中文zh-hans。它主要是后台管理系统会变中文

TIME_ZONE = 'UTC'  # 时区

USE_I18N = True

USE_TZ = True

# Static files (CSS, JavaScript, Images) 静态文件,主要是为html服务的
# https://docs.djangoproject.com/en/4.2/howto/static-files/

STATIC_URL = 'static/'

# Default primary key field type 默认主键字段的类型
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

五、测试服务器启动

python manage.py runserver [ ip:port ]

如果只是改端口可以不用写IP,python manage.py runserver 8001

注意IP不能随便改,要么 127.0.0.1 ,要么就写成 0.0.0.0 (表示可以让局域网其他电脑来访问我),python manage.py runserver 0.0.0.0:8000

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

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

在这里插入图片描述

注意:You have 18 unapplied migration(s) 意思是你有18个没有被应用的迁移文件。这个迁移文件每次创建新项目都会有这个提示,因为它创建项目的同时,在它内部有代码,它内部默认给了你18个迁移文件,它已经生成了迁移文件了,但这个迁移文件并没有同步到迁移文件里面去。这行信息你可以管也可以不管,因为我们现在还没有写自己的模型,如果你要用它内部的这些迁移文件,那么就要去做迁移。

如果你要退出,按 Ctrl+C

在这里插入图片描述

如果用python manage.py runserver 0.0.0.0:8000启动,浏览器输入http://0.0.0.0:8000/ 是访问不了的,用http://127.0.0.1:8000/http://localhost:8000/ 或者 http://自己的ip地址:8000/ 可以访问
cmd ipconfig 查看自己ip
在这里插入图片描述
在这里插入图片描述

六、数据迁移

迁移的概念: 就是将模型映射到数据库的过程
生成迁移文件: python manage.py makemigrations
执行迁移: python manage.py migrate

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

db.sqlite3 迁移文件生成的表格直接打开是打不开的,我们直接使用PyCharm 数据库的可视化吧
在这里插入图片描述

在这里插入图片描述
db.sqlite3 是不需要创建数据库名字的,直接就是表,tables下这些是jango自带的一些数据库表

在这里插入图片描述

七、创建应用

如果项目当中功能很多模块很多,我们可能需要再创建多个App。

python manage.py startapp App创建名称为App的应用

我们创建新的App在settings.py默认情况下是没有注册(定义)的,使用应用前需要将应用配置到项目中,在settings.py中将应用加入到 INSTALLED_APPS选项中,后面就能使用这个App了。

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

在这里插入图片描述

八、基本视图

1. 返回响应 response

我们打开 user\views.py

from django.shortcuts import render

from django.http import HttpResponse


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

路由在MyDjangoPro2\urls.py 里写

from django.contrib import admin
from django.urls import path

from user.views import *

urlpatterns = [
    path('admin/', admin.site.urls),

    # 路由url
    path('index/', index)
]

python manage.py runserver 启动之后浏览器输入 http://127.0.0.1:8000/index/

在这里插入图片描述

2. 渲染模板

在视图模板里面除了返回 HttpResponse(‘hello Django!!!’) 这样的内容以外,还可以以渲染模板的方式。

在user应用中新建一个文件夹templates注意单词不要写错了。在里面我们新建一个html,叫 index.html

在这里插入图片描述

在这里插入图片描述
index.html 代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index页面</title>
</head>
<body>
    <h1>Index页</h1>
    <hr>
    <h3>Hello Django</h3>
</body> 
</html>

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")

http://127.0.0.1:8000/index/

在这里插入图片描述

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

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

相关文章

企业微信认证费用及年审的问题(收藏)

一、企业微信认证审核服务费用说明 企业微信认证的审核是委托第三方审核公司来履行的&#xff0c;对企业提交资料的真实性进行甄别和校验。针对中、大型规模企业&#xff0c;企业微信团队会以电话回访、征信核查等方式&#xff0c;对企业规模进行严格审核。针对大型规模企业&a…

Java分布式微服务3——Docker

文章目录 Docker介绍安装DockerDocker基础操作Docker服务的启动镜像命令容器命令1. 从docker hub去查看Nginx容器的运行命令2. 查看所有容器状态3. 查看容器日志4. 进入Nginx容器执行命令&#xff0c;修改Html内容&#xff0c;添加“Hello World”5. 停止与开始容器6. 删除容器…

错过NFT投资,你可能会后悔吗?

在过去的几年里&#xff0c;非同质化代币&#xff08;NFT&#xff09;以其独特性和创新性&#xff0c;迅速成为数字资产领域的热门话题。NFT代表了数字资产的所有权和独特性&#xff0c;为艺术、音乐、游戏和虚拟世界等领域提供了全新的可能性。然而&#xff0c;对于那些错过了…

使用 Docker 部署 Prometheus + Grafana 监控平台

使用 Docker 部署 Prometheus Grafana 监控平台 默认docker 已经安装好,我使用的是CentOS7 注意一定要开启服务器对应的端口 1. 安装Prometheus docker run -itd --nameprometheus --restartalways -p 9090:9090 prom/prometheus访问:http://ip:9090 2.安装Grafana #这里的$…

【AGC】付费下载上架下载后无法安装问题

【关键字】 AGC、付费下载、应用安装 【问题描述】 有开发者反馈用户下载后无法安装&#xff0c;采用未接入sdk&#xff0c;直接勾选付费-产品上架的方案&#xff0c;以前其他产品是能够正常安装的&#xff0c;现在不知道为啥。 报错信息&#xff1a;付费后显示“订单创建失…

对等离子体的认识

认识等离子体等离子体的产生等离子体的定义等离子体并不远 认识等离子体 等离子体的产生 物质由一百多种元素组成&#xff0c;不同元素结合成各种分子。大量的分子又依靠某种作用力结合或凝聚在一起&#xff0c;由于作用力的强弱不等而表现为各种不同的存在状态。 物质的存在状…

【数学基础】矩阵行列式

行列式意义是什么&#xff1f; 行列式等于它的各个列对应的向量张成的平行2n面体的体积&#xff0c;这是因为行列式是一个交替多重线性形式&#xff0c;而我们通常理解的欧式空间中的体积也是这样一个函数&#xff08;单位立方体体积为1&#xff0c;沿某条边扩大c倍体积就扩大…

利用openTCS实现车辆调度系统(六)openTCS订单的使用

运输订单 由类的实例表示&#xff0c;描述了由车辆执行的进程。 通常&#xff0c;此过程是货物从一个地点到另一个地点的实际运输。 然而&#xff0c;A也可以只描述车辆到目的地位置的运动以及要执行的可选车辆操作。TransportOrderTransportOrder 以下所有内容都是 openTCS …

从源码层面深度剖析Spring循环依赖 | 京东云技术团队

以下举例皆针对单例模式讨论 图解参考 https://www.processon.com/view/link/60e3b0ae0e3e74200e2478ce 1、Spring 如何创建Bean&#xff1f; 对于单例Bean来说&#xff0c;在Spring容器整个生命周期内&#xff0c;有且只有一个对象。 Spring 在创建 Bean 过程中&#xff0…

DT昆虫绑定学习(没蒙皮)

SelectEdgeLoopSp; ConvertSelectionToVertices;selectType -ocm -alc false; selectType -ocm -polymeshVertex true; CreateCluster; 连接到物体 global proc matchTrns() { string $mtr[] ls -sl; if (size($mtr) < 2){ warning "MUST select 2 objects!"…

【C++】开源:ceres和g2o非线性优化库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍ceres和g2o非线性优化库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&…

抖音里面怎么把图片做成动态图片?在线gif生成工具分享

刷抖音的时候&#xff0c;很多人在制作一些老照片&#xff0c;一些静态的照片经过制作能变成动态的照片&#xff0c;许多朋友都不知道怎么将图片做成gif&#xff0c;下面就来为大家分享一下gif动态图片制作的方法&#xff0c;利用在线gif生成&#xff08;https://www.gif.cn&am…

论文分享--On the Difficulty of Evaluating Baselines A Study on Recommender Systems

与基线比较的数值评估在判断推荐系统中的研究时起着核心作用。在本文中,我们证明了正确运行基线是困难的。我们在两个广泛研究的数据集上证明了这个问题。首先,我们表明,在过去五年中,在许多出版物中使用的基线对Movielens 10M基准的结果是次优的。通过仔细设置一个普通矩阵…

Python远程ssh登录机器检查机器信息

文章目录 Python远程ssh登录机器检查机器信息check_env.sh和hosts.yaml文件如下演示 Python远程ssh登录机器检查机器信息 需要在hosts.yaml文件中中输入ssh主机名&#xff0c;端口&#xff0c;用户名&#xff0c;密码使用python3环境&#xff0c;执行python3 check_env.py为了…

兼容性测试的正确打开方式

前几天在我创建的技术交流群&#xff0c;几位同学聊起了兼容性测试相关的话题。有测试的方法技巧&#xff0c;有如何选择测试时的切入点&#xff0c;也有在质量和投入成本之间如何做平衡的思考。 翻了翻写过的技术文章&#xff0c;大多集中在后端、中间件以及稳定性测试方面&a…

评估软件缺陷优先级的6个维度

我们在软件开发中&#xff0c;团队往往面临多个任务&#xff0c;尤其是缺陷任务&#xff0c;如果不对缺陷任务进行优先级排序&#xff0c;按部就班地解决缺陷&#xff0c;那么一旦严重缺陷不能及时解决&#xff0c;往往会对项目造成较大影响&#xff0c;甚至直接影响项目进度。…

处理器方法的参数与返回值

文章目录 前言案例 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 可以简化代码的重复性和冗长性 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 案例 新建controller类代码&#xff1a; Controller public class Parameter…

高忆管理:1800亿投资大佬投降,被散户所逼?美联储释放重磅信号

美国散户“逼疯”华尔街传奇大佬。 美国散户投资者又掀起了一场“逼空”大战。当地时刻8月6日&#xff0c;彭博社报导&#xff0c;华尔街对冲基金传奇人物Dan Loeb在一份信函中清晰向客户标明&#xff0c;他作为做空个股“大赌徒”的日子现已完毕了。当时美股商场的卖空环境“比…

LVS—DR集群的搭建

lvs-dr模式工作原理&#xff1a; 首先&#xff0c;来自客户端计算机CIP的请求被发送到Director的VIP。其次Director使用相同的VIP目的IP地址将请求发送到集群节点或真实服务器。然后&#xff0c;集群某个节点将回复该数据包&#xff0c;并将该数据包直接发送到客户端计算机&am…

有没有必要换cspm?未来的发展前景如何?

最近 CSPM 证书很热门&#xff0c;CSPM 相关问题大家都很关心&#xff0c;今天本橘座就给大家全面解答一下 CSPM到底是何方神圣&#xff1f; 文章主要是解答下面几个常见问题&#xff0c;其他问题可以留言或者私信咨询我哦~ 一、什么是 CSPM证书&#xff1f;跟PMP是什么关系&a…