001 | Python | Django框架快速入门
标签: 001 | Python | Django框架快速入门 Python博客 51CTO博客
2023-07-27 18:24:12 83浏览
介绍
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。
MVC介绍
MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)
Model:主要封装对数据库层的访问,内嵌ORM框架,实现面向对象的编程来操作数据库。 View: 用于封装结果,内嵌了模板引擎,实现动态展示数据 Controller: 用于接收用户请求,处理业务逻辑,与Model和View交互,返回结果
在MVC模型中,如果不需要查询数据库,那么Controller将不会与Model交互,直接与View交互,返回html页面。
MVT介绍
M(Model),与MVC中的M功能相同,负责数据处理,内嵌了ORM框架 V(View),与MVC中的C功能相同,接收请求,业务处理,返回响应 T(Template),与MVC中的V功能相同,负责封装构造要返回的html,内嵌了模板引擎
安装Django模块
pip install django
创建blog项目
django模块安装完毕后,django-admin命令就可以使用
采用django-admin startproject创建一个工程项目
django-admin startproject blog .
生成一个名为blog文件夹及manage.py文件。用编辑器打开后,呈现如下结构:
简单介绍下文件:
- manage.py:是一个命令行工具,是对django-admin.py的简单包装,二者的作用基本一致。django-admin可以对不同的项目进行设置,而manege.py只能对当前的工程有效。
- blog/\\init\\.py:一个空文件,告诉Python该目录是一个Python包
- blog/setting.py:项目的配置文件
- bolg/urls.py:URL分发器(路由配置文件)
- blog/wsgi.py:项目与WSGI兼容的Web服务器入口
- blog/asgi.py:存储asgi设定的文件,如果使用ASGI部署django会用到,一般情况下不需要更改
运行项目
python manage.py runserver
浏览器出现上面类似页面,说明Django项目创建完成。
创建应用
项目是由多个应用有机组合而成的。项目可以理解成一个系统(博客系统),应用可以理解成组成系统的模块,比如登录模块、用户模块、内容模块、文章模块等。
# 创建用户应用
python manage.py startapp user
创建user后出现如上图文件:
- db.sqlite3: 文档型轻量级数据库,django默认使用sqlite数据库
- user: 应用目录
- migrations: 保存数据库数据迁移时生成的文件
- __init__.py:一个空文件,告诉Python该目录是一个Python包
- admin.py:web后台管理,用于注册模型类
- apps.py:用于配置应用的基本信息,如应用的名称、显示名称、图标、默认路径、启动时需要执行的操作等
- models.py:编写模型类,就是MVT模型中的M
- tests.py:用于开发测试类
- views.py:编写视图函数,MVT模型中的V
项目根目录设置
项目根目录设置目的是让编辑器开发中智能正确提醒
编写视图函数
MVT框架中,V(View),接收请求,业务处理,返回响应。视图函数第一个参数必须是request,request参数封装了用户请求的所有内容,名字可以改,行业默认请求参数叫request,响应参数叫response
路由注册
把视图函数注册到路由urls.py文件中,浏览器访问url,再通过urls.py文件找到对应视图
浏览器输入:http://127.0.0.1:8000/user/,就出现如下界面。
MVT,只编写了V,再把视图注册到路由文件后,就完成了一个Django请求响应开发。
View-Template使用
用户打开浏览器,不仅仅只看一行文字,还有其它表现,这个时候需要返回html实体,这个时候就需要借助MVT的T(templates)
新建templates目录
配置文件设置
这一步不配置也行,默认就是这个配置
新建html文件
通过render方法把View和Templates联系在一起。
重启服务后,浏览器访问可以正常访问
静态文件
html页面要引入图片、js、css等静态文件
也需要在配置文件里添加静态文件目录的配置
配置完毕就可以在html页面引入静态文件了
数据:View-->Template
View和Template已经建立了关系,如何在View处理后的数据交给Template呢?
View中以字典对象传递到Template
Template以**{{}}**形式解析变量,这是模板语言的语法
html中需要书写Python逻辑的,则用**{% %}**语法
{% for item in list %}
{{ item }}
{% endfor %}
数据:Template-->View
<form action="/user/" method="post">
{% csrf_token %}
<input type="text" name="name">
<input type="text" name="age">
<input type="submit" value="提交">
</form>
def user_list(request):
if request.method == 'POST':
print(request.POST.get('name'))
print(request.POST.get('age'))
return render(request, 'user/list.html')
因为有跨站请求保护机制,需要在表单中加入{% csrf_token %},否则报错。
View-Models使用
数据从Template页面提交到了View,有需求希望把数据存储起来,这个时候就涉及到Models层及使用数据库。Django默认使用数据库是sqlite3
要把View中的name和age存起来,需要创建数据库表字段,这里通过数据迁移的方式。Django数据迁移文件通过models字段生成。
数据迁移
新建用户(User)类
生成数据迁移文件
把需要生成迁移文件的应用配置进来,否则迁移文件无法正常生成
python manage.py makemigrations
执行迁移文件生成命令,会在对应应用下面生成或更新执行文件
执行下面命令,就可以把迁移文件内容生成数据库表或更新数据库表
python manage.py migrate
数据存取
from django.shortcuts import render
from user import models
def user_list(request):
if request.method == 'POST':
# 存进数据库
models.User.objects.create(name=request.POST.get('name'), age=request.POST.get('age'))
# 数据库取出来
user_all = models.User.objects.all()
print(user_all)
return render(request, 'user/list.html')
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
展开评论