IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django 项目学习 -> 正文阅读

[Python知识库]Django 项目学习

目录

一、环境问题

1、python环境安装

2、django安装

?3、IDE选择

二、 Django命令--实际使用在后面文章中介绍

三、Django项目和应用的关系

1、Django项目中目录介绍

3、Django应用中目录介绍

四、Django中MTV模式以及视图、路由、模型理解

1、MTV模式

2、路由:完成浏览器请求地址与项目中所调用应用以及函数的映射配置

3、视图:来产生内容,业务处理逻辑

4、模型:django中位于视图层和数据库之间的组件,将python对象和数据库表之间进行转换(可以屏蔽不同数据库之间的差异,开发者更加专注于业务逻辑的开发,提供很多便捷工具有助于开发)

五、Django shell 与 Django admin 模块

django shell

django admin?

六、实际应用--Django创建博客web项目过程

1、创建Django项目校验输入等功能类似

2、创建一个blog应用

3、编辑blog中视图views内容,完成访问blog中view,返回hello world字符串

4、 创建bolg博客文章模型,浏览器返回文章信息

5、使用django视图与模板 返回文章内容


好久没写文章了,最近开始学习python的web框架django,在慕课上找到三小时入门Django框架三小时带你入门Django框架-新版视频教程-慕课网,边学边记录一下历程。代码地址:

一、环境问题

1、python环境安装

两种方式安装python环境,python或者 anaconda?

2、django安装

python安装好之后,安装pip命令,可以直接的使用pip install Django==2.0 安装django

?3、IDE选择

pycharm

二、 Django命令--实际使用在后面文章中介绍

#项目相关
	1. startproject #创建一个Django项目
	2. starapp #创建一个Django应用
	3. check #校验项目的完整性
	4. runserver #本地简易运行Django项目
	5. shell #进入Django项目的python shell环境
	6. test #执行Django用例测试
#数据库相关
	7. makemigrations #创建模型变更的迁移文件
	8. migrate #执行上一个命令创建的迁移文件
	9. dumpdata #把数据库数据导出到文件
	10. loaddata #把文件数据导入到数据库

三、Django项目和应用的关系

django应用 一个Django应用就是一个可重用的Python软件包;每个应用可以自己管理模型、视图、模板、路由和静态文件等

一个Django项目包含一组配置和若干个Django应用

1、Django项目中目录介绍

  1. setting.py:项目配置文件?

  2. urls.py:项目路由配置文件

  3. manage.py:项目管理文件

3、Django应用中目录介绍

  1. views.py:视图处理的地方

  2. models.py:定义应用模型的地方

  3. admin.py:定义Admin模块管理对象的地方

  4. apps.py:声明应用的地方

  5. test.py:便携应用测试用例的地方

  6. urls.py:(自行创建)管理应用路由的地方

四、Django中MTV模式以及视图、路由、模型理解

1、MTV模式

  1. M:model模型--业务对象和DB的映射,以类实现
  2. T:Template模板--如何把页面给用户
  3. V:view视图 --业务逻辑,会调用M T

2、路由:完成浏览器请求地址与项目中所调用应用以及函数的映射配置

3、视图:来产生内容,业务处理逻辑

4、模型:django中位于视图层和数据库之间的组件,将python对象和数据库表之间进行转换(可以屏蔽不同数据库之间的差异,开发者更加专注于业务逻辑的开发,提供很多便捷工具有助于开发)

根据以上内容的理解,画出一张django项目调用流程图,个人理解,仅供参考

五、Django shell 与 Django admin 模块

django shell

类似python shell 可以进行交互式的编程,还继承了Django项目的环境,方便开发、调试和debug

如何使用:祥见 六--4--(3)创建一篇文章

django admin?

django的后台管理工具,读取定义的模型的元数据,提供强大的管理使用页面;使用django shell 新增文章太费劲,使用 django admin 就可以很方便的新增文章;认证用户、显示管理模型,

如何使用:详见六--4--?(4)使用django admin 创建管理员用户+登录页面进行模型管理

六、实际应用--Django创建博客web项目过程

1、创建Django项目校验输入等功能类似

win+R? 打开运行框,输入cmd,进入命令框 ;进入项目代码存储目录,输入如下命令创建django项目:django-admin startproject project_name

创建好项目之后,进入项目路径下,可以通过dir命令查看目录下的文件

将创建好的django项目使用pycharm打开

2、创建一个blog应用

在pycharm中,打开项目中的Terminal,输入如下命令创建一个应用:

python manage.py startapp appname

3、编辑blog中视图views内容,完成访问blog中view,返回hello world字符串

首先,如果想返回hello world字符串,得现在blog-views中编写函数返回hello word;

然后在修改项目以及应用的路由,将浏览器中访问的路径映射到blog-views中的函数。

先修改应用blog的路由urls.py;在urls.py文件中,添加urlpatterns--path实现字符串和函数的匹配

?再修改整个项目中的urls.py,添加应用级别的 路径匹配信息

?再修改项目的settings.py文件,把blog应用添加到项目的配置settings文件里面

?最后验证下,功能是否实现,# 在终端Terminal输入命令运行,将django项目启动运行

python manage.py runserver

可以再浏览器输入http://127.0.0.1:8000/blog/hello_world?验证

Django的请求流程

浏览器发送请求->项目路由转发请求给项目应用->项目应用中找到视图函数->视图函数通过应用路由转发给函数->函数返回结果给浏览器

此图来源慕课老师ppt

4、 创建bolg博客文章模型,浏览器返回文章信息

(1)首先了解下模型层相关的配置

setting.py文件中DATABASE ; db.sqlite3 是数据库相关的配置

模型层的实体的属性都写到应用中的models.py中

?(2) 创建博客文章模型

先设计博客文章模型,文章标题(文本类型-string)、摘要(文本类型-string)和内容(文本类型-string)、唯一ID标记(int数字类型-自增、主键)、发布日期(日期类型)

接着模型层定义字段

  • 数字类型:IntegerField? ;? 自增?AutoField? ;主键 primary_key
  • 文本类型:TextField
  • 日期类型:DateTimeField

实现博客文章模型-blog.models.py

?定义好了之后,将模型的定义保存到数据库(模型迁移),

① 在terminal中输入如下命令,将模型生成对应的迁移文件:

python manage.py makemigrations

?如上图已经成功创建迁移文件,在blog项目的目录下生成文件,

② 接下来执行下面命令,将生成的迁移文件同步到数据库中

:python manage.py migrate

?(3)新建一篇文章

terminal 中 输入命令:python manage.py shell? ,进入django shell 环境,

接下来可以在django shell中进行调试,新建文章

?(4)使用django admin 创建管理员用户+登录页面进行模型管理

①创建超级管理员用户

terminal中输入 命令创建超级管理员用户:python manage.py createsuperuser

②登录页面进行模型管理

?接下来,将django项目跑起来,python manage.py runserver ,然后来到浏览器,输入地址 访问管理页面?http://127.0.0.1:8000/admin/login/? 输入刚才注册的用户密码

可以通过后台的管理页面看到 用户和组的信息,

但是没看到刚才创建的文章信息,是因为我们没有将文章模型信息加入到admin中,下面+一下

打开IDE,打开blog应用下的admin.py文件,输入如下代码,就完成将模型注册进admin了

?刷新浏览器,就看到新增的Article了

?点击Articles就可以通过页面进行新增博客了

?看上图的文章列表,每个文章我们分辨不出题目是什么,就需要新增一个方法 来显示文章的title,回到models.py中新增函数

就可以再去查看admin列表,显示文章的标题了

?

?(5)实现博客数据返回页面

① 编辑返回博客文章数据的函数 在models.py中

②配置路由,应用的就可以,因为上面的步骤中,项目到应用的路由已经添加好了 blog下面的urls.py

?③ 访问路径去读文章内容?http://127.0.0.1:8000/blog/content

5、使用django视图与模板 返回文章内容

(1) 使用bootstrap实现静态博客页面

首先在blog应用目录下创建一个Templates文在Templates目录下创建一个 index.html文件

?然后将bootstrap框架的静态文件拷贝进来?起步 · Bootstrap v3 中文文档 | Bootstrap 中文网

?放到head中

接下来进行首页index.html 开发body,将body分成2个部分标题和内容,内容又分为左右两个部分呢,左边占9个栅格,右边占3个栅格,

再进行文章详情页开发,在templates文件夹下新建html文件,detail.html;

以上为使用bootstrap实现两个静态页面

(2)使用django模板系统渲染博客页面-index、detail

现在开始改造index 和 detail页面,将固定的静态内容改成模板语法

article_list哪里来的呢?是我们自己需要实现的函数,接下来进入views.py中实现get_index_page函数

还需要在templates文件夹下创建一个blog目录,将index.html和detail.html文件放入blog下面,

再去应用的urls.py下面增加这个文章内容的路径设置

将项目运行起来,访问页面(http://127.0.0.1:8000/blog/index)可以看到,将刚才加入的文章信息,展示读取到页面中?

相同工作再去修改下detail页

?(3)实现文章详情页面的跳转

① 设计文章详情页面的URL? ? blog/detail/1 ==>博客id为1的文章

②url路径参数的获取-在blog.urls.py中获取

?接下来改造 视图中的函数

?修改完,访问页面?http://127.0.0.1:8000/blog/detail/1?即可看到详情页

③ 实现首页跳转

改造index.html 在article.title添加上<a>标签

访问index 页面能点击连接进行跳转了

?

??(4)实现上下篇文章的跳转-detail页添加2按钮

?①修改详情页,增加两个按钮

去bootstrap 组件 · Bootstrap v3 中文文档 | Bootstrap 中文网?中找到按钮 复制到代码中

②修改视图中函数

def get_detail_page(request,article_id):
    all_article = Article.objects.all()
    curr_article = None
    previous_index = 0
    next_index = 0
    previous_article = None
    next_article = None
    for index, article in enumerate(all_article):
        if index == 0:
            previous_index = 0
            next_index = index + 1
        elif index == len(all_article) - 1:
            next_index = index
            previous_index = index - 1
        else:
            previous_index = index - 1
            next_index = index + 1

        if article.article_id == article_id:
            curr_article = article
            previous_article = all_article[previous_index]
            next_article = all_article[next_index]
            break
    section_list = curr_article.content.split('\n')
    return render(request,'blog/detail.html',  # 调用这个函数的数据放回给blog/index页面,下面字典中将数据对应上了
                  { # 页面的数据需要用字典包含起来
                      'curr_article': curr_article,
                      'section_list': section_list,
                      'previous_article':previous_article,
                      'next_article':next_article
                  })

再去访问详情页,即能看到两个翻页按钮

?个人学习历程,仅供参考,共同进步

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-28 22:52:51  更:2021-12-28 22:54:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:19:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码