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
                  })

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

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

猜你喜欢

转载自blog.csdn.net/qq_26479645/article/details/122170763