目录
Django简介
Django,发音为[`dʒæŋɡəʊ]
django 是用 python 语言写的开源 web 开发框架,并遵循 MVT 设计模式。
诞生历史: 劳伦斯出版集团为了开发以新闻内容为主的网站,而开发出来了这个框架,于2005年7月在 BSD 许可证下发布。这个名称来源于比利时的爵士音乐家 DjangoReinhardt,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。
由于 Django 在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志 SDTimes 评选为2013SDTimes100,位列"API、库和框架"分类第6位,被认为是该领域的佼佼者。
Django 的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django 有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django 具有很强的可扩展性。它还强调快速开发和 DRY ( Do Not Repeat Yourself )原则。
Django版本
Django版本问题
如上图所示,django各个稳定版都有LTS标识,在使用时,建议使用稳定版本。而django大概9个月左右就会出一个稳定版本。
django 1.x 同步
django 2.x 同步
django 3.x 支持异步
django 4.x 支持异步
Django基本使用
Django下载安装
django的下载
# 使用pip下载模块会自动解决依赖问题
pip3 install django==版本号 # 注意不指定版本,会直接下载最新版
# 验证是否安装成功,在cmd中输入django-admin即可,输出结果如下
Type 'django-admin help <subcommand>' for help on a specific subcommand.
Available subcommands:
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
makemigrations
migrate
runserver
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
Note that only Django core commands are listed as settings are not properly configured (error: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.).
Django基本操作
命令行创建并启动Django项目
# 在命令行中创建项目
django-admin startproject myDjangoProject
# 启动项目(不加IP与PORT则为默认127.0.0.1:8000)
cd myDjangoProject
python manage.py runserver IP:PORT
PyCharm创建并启动Django项目
- 创建完成后,需要修改settings.py中的配置,如下:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
#'DIRS': [BASE_DIR / 'templates'], # 我用的2.2.x版本的,需要修改此配置,否则启动项目会报错
'DIRS': [os.path.join(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',
],
},
},
]
在Django中创建app
- Django是一个大的框架,APP是在这个框架中的各个功能。
# 创建一个Djaongo APP
python manage.py startapp app01
# 创建完成以后,需要注册进Django配置文件中
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 添加刚刚创建的APP,也可以直接写缩写app01
'app01.apps.App01Config',
]
Django主要目录结构
djangoProject1
djangoProject1
settings.py 配置文件
urls.py 路由配置文件
wsgi.py 网关文件
asgi.py 异步功能文件(django3.x以上有)
manage.py django启动文件
db.sqllite3 自带数据库
app01 应用目录
migrations 存储数据库相关记录
admin.py django内置后台管理功能
apps.py 注册app相关
models.py 模型层,与数据库相关
tests.py 内置测试文件
views.py 视图层,存储视图函数/视图类
templates 模板层,存储html文件(命令行不会自动创建,且需要在settings.py中TEMPLATES中添加配置)
Django三板斧
render # 返回html页面
HttpResponse # 页面返回一个字符串
redirect # 重定向网页链接
创建第一个页面
三板斧之render的使用
# 1. 在路由层urls.py中添加一个路由
# 2. 导入视图层
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
# 3. 添加一个路由
path('home/', views.home_func),
]
# 4. 在视图层views.py中创建对应函数
from django.shortcuts import render, HttpResponse, redirect
def home_func(request):
return render(request, 'home.html')
# 5. 在模板层创建对应的home.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
# 最后打开页面,可以看下面的截图
三板斧之HttpResponse使用
# 1. 路由层urls.py创建对应路由
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
# 添加一个路由
path('home/', views.home_func),
# 添加HttpResponse测试路由
path('index/', views.index_func),
]
# 2. 在视图层添加对应函数
from django.shortcuts import render, HttpResponse, redirect
def index_func(request):
return HttpResponse('Hello World,I am HttpResponse!')
# 3. 直接打开相应页面,可以看到效果,如下图
向前端发送数据
def home_func(request):
# 定义一个字典
user_dict = {'name': 'KingKong', 'age': 18, 'job': 'Computer'}
# 在向前端返回时,返回一个字典即可,字典的键可随意定义一个名字,后面的值为返回的字典,
return render(request, 'home.html', {'d1': user_dict})
# 如果返回的字典数据太多,也可使用locals进行返回
# 页面接收数据
<body>
<h1>Hello World</h1>
<p>{{ d1 }}</p>
<p>{{ d1.name }}</p>
<p>{{ d1.age }}</p>
<p>{{ d1.job }}</p>
</body>
# 此时页面返回信息如下:
Hello World
{'name': 'KingKong', 'age': 18, 'job': 'Computer'}
KingKong
18
Computer
# 也可以使用locals()函数向前端传输所有数据
def home_func(request):
user_dict = {'name': 'KingKong', 'age': 18, 'job': 'Computer'}
my_dict = {'name': 'TomCat', 'age': 3, 'hoppy': 'mouse'}
return render(request, 'home.html', locals())
# 前端代码
<body>
<h1>Hello World</h1>
<p>{{ user_dict.name }}</p>
<p>{{ user_dict.age }}</p>
<p>{{ user_dict.job }}</p>
<p>{{ my_dict.name }}</p>
<p>{{ my_dict.age }}</p>
<p>{{ my_dict.hoppy }}</p>
</body>>
# 前端返回结果
Hello World
KingKong
18
Computer
TomCat
3
mouse
三板斧之redirect
# 1. 路由层配置路由
path('test/', views.test_func),
# 2. 视图层配置对应视图
def test_func(request):
return redirect('https://www.baidu.com/') # 重定向到外部链接
return redirect('/index/') # 重定向到自己的路由
# 此时访问http://127.0.0.1/test/时,则会自动跳转至https://www.baidu.com/页面中
标签:py,Django,初识,dict,home,django,路由
From: https://www.cnblogs.com/smyz/p/17124180.html