ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Django初始

2022-06-20 01:00:28  阅读:195  来源: 互联网

标签:项目 py 用户 视图 django Django 初始


1.2 Django框架

1.2.1 框架介绍

MVT&MVC

知道了框架的意义,那么就很好阐述我们接下来要讲的Django,这个框架的设计模式,Django主要采用MVT模式

M-model模型,操作数据库功能部分

V-View视图,处理业务逻辑的位置,提取数据、获取用户数据等等操作都在这里

T-Template模版,用来展示视图操作后的数据,也可以在模版中为用户提供表单,让用户可以提交数据


  • 在其他语言框架中,还有另外一种盛行的模式,叫做MVC,类似与DjangoMVT

M-model模型,和MVT的 m 是一样的,同样用来操作数据库

V-view视图,和MVT的 T 是一样的,用来进行数据的可视化

C-Controller:控制器,相当于MVT中的 V,用来进行数据的逻辑操作


MVTMVC
M-model M-model
V-View C-Controller
T-Template V-view

Django 介绍

Django是一个开放源代码的Web 应用框架,由纯Python写成,是目前 Python 语言中主流 de 三大Web框架之一(flaskdjangotornado),是最容易上手的框架

Django最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件

框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的,这也代表着这是一门及其优雅的框架


  • 那啥又是CMS(Content Management System)呢?

其实说白了,这就是一个管理内容的平台,可以让用户、企业对自己的资源进行便捷的展示、修改、删除等操作


  • Django有哪些应用呢?

Pinterest:这是世界上最大的图片社交分享网站,在这个网站,你可以创建和管理主题图片集合,例如事件、兴趣和爱好。2009 年就开始建设,目前拥有超过三亿用户,并且绝大多数用户都是女性

bitbucket:这是一家源代码托管网站,拥有无限制的私人仓库个数,磁盘空间,以及灵活的权限控制等

nasa:美国宇航局官方站点

国内还有比较知名的豆瓣网,也是用 Django 的哦


  • Django的特点?

总结来说,Django适合与内容有关的项目,常见的就是后台管理,一些系统,这个框架适合敏捷开发,可以让开发者快速高效的产出,而其他需要并发等的业务体系,Django就不太适合了

1.2.2 框架安装

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple  # 设置清华镜像
python -m pip install --upgrade pip   # 升级pip版本命令
pip install django==2.2.2  # 安装django

Run npm i -g @vue/cli to update

1.2.3 项目创建

django-admin startproject myproject
创建django应用
django-admin startapp myapp

通过启动Django自带的开发服务器,我们可以很快速的启动当前创建好的空壳项目,并且看到来自Django的友好提示

python manage.py runserver

1.2.4 目录介绍

创建好一款Django项目之后,它已经是具备了一些基本的文件及文件夹

  • manage.py:用来管理当前项目的一个命令行工具

  • myproject:项目主文件夹,包含了项目最基本的配置文件及路由文件

    • __init__.py:空文件,用来指明当前的myproject为一个可导入的模块包

    • settings.py:项目主要配置文件

    • urls.py:项目主要路由配置文件

    • wsgi.py:项目部署WSGI并发服务器时所需要的配置文件

settings.py 配置

这个文件包含了诸多未来我们会操作的Django配置,其中默认提供的选项解释如下

  • BASE_DIR:当前项目工作目录,用来在每一次开启项目时动态找到这个项目运行在当前操作系统下的哪个目录下

  • SECRET_KEY:加密的hash值以及保护某些签名数据的关键密钥

  • DEBUG调试模式,在这个模式下,你可以很清晰的看到出错信息,如果关闭了,那么出错将会变为状态码或者隐蔽性更高的报错页面

  • ALLOWED_HOSTS:当前主机所拥有的IP哪些可以被外界使用访问Django

  • INSTALL_APPSDjango项目中所有使用的应用名称,自创建子应用也要加到这里,不然ORM数据库无法被识别到

  • MIDDLEWARE:中间件,用来在 请求request和 响应reponse过程中添加功能,比如确保安全性,传输保存Session

  • ROOT_URLCONF:主路由配置文件,字符串填写 url.py 文件路径

  • TEMPLATES:模板文件配置项

  • WSGI_APPLICATION:WSGI 服务器配置项,找到当前 django 下的 wsgi 引入 APP 文件

  • DATABASES:数据库配置项,默认使用SQLite3,一个本地文件数据库

  • AUTH_PASSWORD_VALIDATORS:检查用户密码强度的验证程序列表,不过是针对admin组件下的用户,而非自定义

  • LANGUAGE_CODE:所使用语言文件,一般国内项目采用zh-Hans

  • TIME_ZONE:所使用时区,一般国内项目采用Asia/Shanghai

  • USE_I18N:国际化支持 18 表示 Internationalization 这个单词首字母 I 和结尾字母 N 之间的字母有 18 个

  • USE_L10N:是localization的缩写形式,意即在 l 和 n 之间有 10 个字母

  • USE_TZ:开启了Time Zone功能,则所有的存储和内部处理,包括 print 显示的时间将是是 UTC 时间格式

  • STATIC_URL访问静态资源时的URL**路径

1.3 子应用

1.3.1 子应用是啥及其意义

应用是一个专门做某件事的网络应用程序,比如博客系统中的用户功能部分,一个考试系统中管理试卷的部分。

项目则是一个网站使用的配置和应用集合,一个项目可以包含很多个app**应用应用**可以被很多个项目使用。


尝试来把这个网站的app应用拆分一下:http://123.57.61.168:82/

用户部分 APP帖子部分 APP
用户登录用户注册用户密码找回用户个人资料管理 帖子发布、帖子评论、帖子编辑、帖子点赞点踩、帖子热度排名

 

1.3.2 子应用创建

python manage.py startapp appname

 

1.3.3 子应用目录结构

  • app/:app目录

    • admin.py:这个app****所使用表模型在admin注册展示时需要的文件

    • views.py:视图函数文件,编写主要的增删改查等数据逻辑的地方

    • models.py:未来操作数据库时,如果使用ORM****映射关系,那么将使用该文件

1.3.4 子应用视图逻辑

创建好了子应用,接着来编写实际的功能视图函数吧,让我们具有一个自己真正的页面!

编写视图

打开app下的views.py文件,编写视图函数

from django.http import HttpResponse
def index(request):
return HttpResponse("<h1>Hello world</h1>")

views.py中我们通过编写函数的形式,接收用户请求的*request**并返回一个response,这个response**通过HttpResponse**方法进行返回,这个方法很简单,返回的就是一个html*字符串

编写路由

视图好比我们在超市摆放的一件件商品,可以为顾客提供服务,那么想让顾客真正可以购买得到这件商品,我们还需要给用户提供一个地图,或者说一个指引,这个指引就是浏览器中我们常输入的一段URL**连接地址

接下来就需要把视图方法对应到一个固定唯一的URL**地址上,让用户可以通过这个地址,访问到这个视图

打开项目主目录下的urls.py**文件,编写路由映射

from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls), #admin 控制界面路由
path('',views.index)
]

访问一个页面其实就是通过一个URL连接地址找到了服务器上的一个视图函数,*path*****函数用来处理一个路由对应的视图映射

path(route, view, name)
'''
route: 匹配规则,是一个字符串
view:对应的视图函数
'''
 

标签:项目,py,用户,视图,django,Django,初始
来源: https://www.cnblogs.com/20020303s/p/16391956.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有