许多年前曾经接触过Django,那时候还是1.X版本,现在都到了4.2版本了。今天抽空复习一下有关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
新建一个项目目录,例如: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 mysite
和python 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更重些但更全面。