惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
D
Docker
有赞技术团队
有赞技术团队
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
爱范儿
爱范儿
H
Help Net Security
美团技术团队
MyScale Blog
MyScale Blog
B
Blog RSS Feed
C
Check Point Blog
Microsoft Security Blog
Microsoft Security Blog
阮一峰的网络日志
阮一峰的网络日志
A
About on SuperTechFans
小众软件
小众软件
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
G
Google Developers Blog
月光博客
月光博客
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Blog — PlanetScale
Blog — PlanetScale
MongoDB | Blog
MongoDB | Blog
F
Fortinet All Blogs

碎言

不懂就别瞎掰掰:【程序员的常识】写的什么玩意? AI 辅助编程下的程序设计与代码编写 使用 Next.js 和 Tailwind CSS 构建可编辑和删除的 ToDo 待办事项应用 探索编程新境界:MarsCode 助你一臂之力 使用 Next.js 和 Tailwind CSS 搭建静态图片展示站点并部署到 Vercel AI 辅助编程:免费工具的优缺点及官网一览 GitHub push更新总是失败,写个python脚本解决 把博客从GitHub迁移到到了vercel ComfyUI 和 Flux.1 安装与使用教程 Flux.1 入门必知:硬件、环境、模型 Git项目的子文件夹中的内容无法同步到远程仓库的解决方法 blender流体Fluid使用中没有流体、流体穿模等一些问题的解决方法 博客聚合网站:积薪,竟然关闭了! blender日常使用中的一些技巧 虽然只有我自己在用,但还是更新了碎言博客的源代码, 与其在迷茫中困惑,不如在努力中前进 差点忘了我还有一个博客... 秧歌、博客和AI 终于熬到了新手上路 好久没有更新博客了。。。 老妈大腿骨骨折,最近一直在医院护理 Hello, September! Ubuntu开机自动启动Docker容器运行WordPress Docker 简单快速安装部署WordPress Docker下安装MySQL 加碘盐能防核辐射的话,还怕什么核战争? shields.io 一个简洁、一致、清晰的徽章 Ubuntu下使用root登录ssh的设置 GitHub Actions 构建、部署 Next.js项目 我又用回了"IE"--edge
Django 4.2 复习笔记(一)迅速概览
J.sky · 2023-05-18 · via 碎言

许多年前曾经接触过Django,那时候还是1.X版本,现在都到了4.2版本了。今天抽空复习一下有关Django的相关技术要点。

Django 安装

建议使用conda创建虚拟环境

conda 常用的命令。

conda list 查看安装了哪些包。
conda env list 或 conda info -e 查看当前存在哪些虚拟环境
conda update conda 检查更新当前conda
conda --version 查询conda版本
conda -h 查询conda的命令使用
activate // 切换到base环境
conda deactivate //退出虚拟环境
activate learn // 切换到learn环境
conda create -n learn python=3 // 创建一个名为learn的环境并指定python版本为3(的最新版本)
conda env list // 列出conda管理的所有环境
conda list // 列出当前环境的所有包
conda install requests 安装requests包
conda remove requests 卸载requets包
conda remove -n learn --all // 删除learn环境及下属所有包
conda update requests 更新requests包
conda env export > environment.yaml // 导出当前环境的包信息
conda env create -f environment.yaml // 用配置文件创建新的虚拟环境

然后使用pip进行安装:

pip install Django

查询Django版本:

>>> import django
>>> print(django.get_version())
4.2

创建Django项目

新建一个项目目录,例如:app

cd app
django-admin startproject mysite

之后我们可以看到项目的结构大体如下:

.
└── mysite
    ├── manage.py
    └── mysite
        ├── __init__.py
        ├── asgi.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py

切换到项目的根目,manage.py同目录:

python manage.py runserver

admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
May 18, 2023 - 01:38:18
Django version 4.2.1, using settings 'app.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

浏览器输入网址:http://127.0.0.1:8000/ 就可以看到Django的默认的欢迎页面了。

创建应用

进入项目的目录,要和manage.py同目录,运行创建一个应用:

python manage.py startapp myapp


.
└── mysite
    ├── db.sqlite3
    ├── manage.py
    ├── myapp
    └── mysite

这个时候发现myapp的这个应用就创建成功了。

django-admin startproject mysitepython manage.py startapp myapp的区别是,startproject创建的是一个项目,startapp创建的是一个应用,一个项目可以包括多个应用,例如创建一个网站项目,可以包括:新闻、图片库、后台管理等,这些可以细化成单个的应用,可以对应到路由,应用模块化后方便以后分开进行开发。

添加视图和路由

myapp/views.py添加一个视图:

from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello world!")

myapp/urls.py添加路由:

from django.urls import path
from . import views


urlpatterns = [
    path("",views.index,name="index"),
]

好了,这一套组合拳下去,我们也该看看效果了,在manage.py所在的目录中运行:python manage.py runserver,然后在浏览器里访问你的地址加上你的目录:http://127.0.0.1:8000/myapp,就可以看到久违的’hello world’了。

总结

如果你使用过flask或是fastapi,你会发现Django的hello world显得有些繁琐,但是每个web框架都有各自的优缺点,Django大而全,帮你准备好了web所需的各种依赖,相对于flask和fastapi,Django更重些但更全面。