Django开发简单博客流程

时间:2021-08-25 00:13:43

什么是Django?

  1. Django是一个基于python的高级web开发框架
  2. 它能够让开发人员进行高效且快速的开发
  3. 高度集成(不用自己造*), 免费并且开源

当前路径创建工程

django-admin startproject myblog

  Django开发简单博客流程

  1. 目录名称不建议修改
  2. Wsgi.py python服务器网关接口(python应用与web服务器之间的接口)
  3. Urls.py Django项目中所有地址(页面)都需要自己去配置URL
  4. Settings.py 数据库等等配置
  5. __init_模块化,可以导入

创建应用:

  1. 打开命令行,进入项目中manage.py同级目录  
  2. 命令行输入: python manage.py startapp blog
  3. 添加应用名到settings.py中的Insalled_APPS里

  Django开发简单博客流程

  1. migrations数据移植(迁移)模块
  2. admin.py :该应用的后台管理系统配置(Django自带的后台管理系统)
  3. apps.py :当前应用的一些配置,Django-1.9以后自动生成
  4. models.py : 数据模块,使用了ORM框架.类似于MVC结构中的Models(模型)
  5. views.py :执行相应的代码所在模块,代码逻辑处理的主要地点,项目中的大部分代码均这里编写

代码开始

项目中第二种URl配置

  1. 在根urls.py中引入include
  2. 在App目录下创建urls.py文件,格式与根urls.py相同
  3. 根urls.py中url函数第二个参数改为include(‘blog.urls’)
  4. 根urls.py针对App配置的URL名称,是该App所有URL的总路径
  5. 配置url时注意正则表达式结尾符号$和/

Templates介绍:

  1. Templates就是存放HTMl文件
  2. 使用了Django模板语言(Django Template Language, DTL)
  3. 可以使用第三方模板(如jinja2)

在哪里修改:

  1. Setting中的TEMPLATES 中BACKEND 值

开发第一个Template

  1. 在app的根目录下创建名叫Templates的目录
  2. 在该目录下创建html文件
  3. 在views里渲染给浏览器 render

return render(request, "index.html")

  1. Render()的第三个参数 支持一个dict类型参数
  2. 该字典是后台传递到模板的参数,键为参数名
  3. 在模板中使用{{参数名}}来直接使用

Django 查找Template

  1. Django按照INSTALLED_APP中添加的顺序查找Templates
  2. 不同APP下Templates目录中的同名.html文件会造成冲突

解决TemplatesTemplates冲突方案

  1. 在APP的Templates目录下创建以APP名为名称的目录
  2. 将html文件放入新建的目录下

Models的介绍

  1. 通常,一个Model对应数据库的一张数据表
  2. Django中Models以类的形式表现
  3. 包含了一些基本字段以及数据的一些行为

ORM

  1. 对象关系映射(Object Relation Mapping)
  2. 实现了对象和数据库之间的映射
  3. 隐藏了数据访问的细节,不需要编写SQL语句

编写Models步骤:

  1. 在应用根目录下创建models.py, 并引入models模块
  2. 创建类继承models.Model,该类即是一张数据表
  3. 在类中创建字段

字段创建:

  1. 字段即类里面的属性(变量)
  2. Attr = models.CharField(max_length=64)

参数介绍等可以来这里查看

https://docs.djangoproject.com/en/1.10/ref/models/fields/

生成数据表:步骤

  1. 命令行中进入manage.py统计目录
  2. 执行python manage.py makemigrations app名(可选)
  3. 在执行python manage.py migrate

查看:

  1. Django会自动在app/migrations/目录下生成移植文件
  2. 执行python manage.py sqlmigrate 应用名 文件id 查看SQL语句(python manage.py sqlmigrate blog 0001)
  3. 默认sqlite3的数据库在项目根目录下db.sqlite3

查看并编辑db.sqlite3

  1. 使用第三方软件,SQLite Expert Personal 轻量级,完全免费
  2. 关联数据 在sqlite3安装的路径下执行命令 要不然不能直接打开数据库
  3. sqlite3.exe D:\pycharm\imooc\myblog\db.sqlite3
  4. 然后在双击打开db.sqlite3

后台步骤(页面呈现数据):

  1. Views.py中import models
  2. article = models.Article.objects.get(pk=1)
  3. render(request, page, {‘article’:article})

前端步骤:

  1. 模板可直接使用对象以及对象的”.”操作
  2. {{article.title}}

Amin简介:什么是Admin?

  1. Admin是Django自带的一个功能强大的自动化数据管理界面
  2. 被授权的用户可直接在Admin中管理数据库
  3. Django提供了许多针对Admin的定制功能

配置Admin

  1. python manage.py createsuperuser 创建超级用户
  2. 访问地址: http://127.0.0.1:999/admin/
  3. 变成中文修改settings.py中LANGUAGE_CODE = “zh_Hans”

配置应用

  1. 在应用下admin.py中引入自身的models模块(或里面的模型类)
  2. 编辑admin.py: admin.site.register(models.Article)

使用Admin修改数据:

  1. 点击Article超链接进入Article列表页面
  2. 点击任意一条数据,进入编辑页面修改
  3. 编辑页面下方一排按钮可执行相应操作

修改数据默认显示名称:

  1. 在Article类下添加一个方法
  2. 根据python版本选择__str__(self)(python3使用这个)或__unicode_(self)
  3. return self.tile

博客页面设计

  1. 博客主页面
  2. 博客文章内容页面
  3. 博客撰写页面

主页面内容:

  1. 文章标题列表,超链接
  2. 发表博客按钮(超链接)

列表编写思路:

  1. 取出数据库中所有文章对象
  2. 将文章对象打包成列表,传递到前端
  3. 前端页面把文章以标题超链接的形式逐个列出

模板For循环语法:

  1. {% for xx in xxs %}
  2. HTML语句
  3. {% endfor %}

博客文章页面:

  1. 标题
  2. 文章内容
  3. 修改文章按钮(超链接)

URL传递参数:

  1. 参数写在响应函数中request后,可以有默认值
  2. URL正则表达式 r'^article/(?P<article_id>[0-9]+)$
  3. URL正则中的组名必须和参数名一致

超链接目标地址:

  1. href后面是目标地址
  2. Template中可以用”{% url ‘app_name:url_name’ param %}”
  3. 其中app_name 和url_name都在url中配置

url函数的名称参数

  1. 根urls, 写在include()的第二个参数位置,namespace=’blog’
  2. 应用下则写在url()的第三个参数位置,name=’article’
  3. 主要取决于是否使用include引用了另一个url配置文件

博客撰写页面,页面内容

  1. 标题编辑栏
  2. 文章内容编辑区域
  3. 提交按钮

编辑响应函数:

  1. 使用request.POST[ ‘ 参数名’ ]获取表单数据
  2. models.Article.objects.create(title,content)创建对象
  3. 涉及POST方法提交表单的, 前端页面加上{% csrf_token %}

两个编辑页面(思路):

  1. 新文章为空,修改文章有内容
  2. 修改文章页面有文章对象
  3. 文章的ID

博客撰写界面修改数据

  1. article.title = title
  2. article.save()

Temple过滤器,什么是过滤器?

  1. 写在模板中,属于Django模板语言
  2. 可以修改模板中的变量,从而显示不同的内容

怎么使用过滤器:

  1. {{value | filter}}
  2. 例子:{{ list_nums | length}}
  3. 过滤器可叠加:{{value | filter1 | filter2|…}}

Django Shell

  1. 它是一个python的交互式命令行程序
  2. 它自动引入了我们的项目环境
  3. 我们可以使用它与我们的项目进行交互

如何使用DjangoShell?

  1. Python manage.py shell
  2. from blog.models import Article
  3. Article.objects.all()

有什么用?

  1. 我们可以使用Django shell 来进行一些调试工作
  2. 测试未知的方法

Admin:创建admin配置类

  1. Class ArticleAdmin(admin.ModelAdmin)
  2. 注册:admin.site.register(Article, ArticleAdmin)

显示其他字段:

  1. List-display = (‘title’, ‘content’)
  2. List_display 同时支持tuple和list

过滤器:

  1. List_filter = (‘pub-time’)

相关代码地址:https://github.com/jiyanjiao/myblog

配置Django manage.py直接在pycharm中运行

  1. 选中当前工程  点击Run -----> EditConfiguration Django开发简单博客流程

Django开发简单博客流程的更多相关文章

  1. Django开发个人博客入门学习经验贴

    [写在前面] 入门学习搭建个人博客系统首先还是参考大佬们的经验,记得刚入手Django的时候,一篇博客大佬说过一句话,做技术的不要一开始就扎头于细节中,先把握整体框架,了解这个对象之后再去了解细节,进 ...

  2. django 开发简易博客(二)

    这一节我们来了解模板和视图.URL的使用. 一.使用模板 在blog目录中新建templates文件夹,在templates文件夹下新建base.html文件.目录结构如下 templates/ ba ...

  3. django开发简易博客(一)

    这几篇博客是根据GoodSpeed的博客该写的,看了他的博客收获很大,但是他的博客从第三篇开始,条理很不清晰,加之又是几年之前写的,编写环境发生很大改变,所以对他的博客进行了一个整理,加入了一些自己的 ...

  4. django开发简易博客(四)

    上一节,我们讲述了怎么使用静态文件,并使用bootstrap对页面进行了美化,这一节我们将增强我们blog的功能,添加发表博客,删除博客的功能. 一.表单的使用 要实现添加blog的功能,就得使用表单 ...

  5. django开发简易博客(三)

    一.静态文件的使用 首先,新建static目录,目录下分别建立css.js.img三个子目录 修改settings.py文件 STATICFILES_DIRS = ( 'F:/web/static', ...

  6. django开发简易博客(五)

    这一节将讲述如何添加comments库与ajax的支持. 一.添加comments库 comments库是是django框架内置的一个评论库,可以快速的搭建岀一个评论系统,不过再自定义方面有些麻烦,不 ...

  7. 使用django开发一个博客

    环境: MAC 10.10.5  Yosemite Python 3.73 Django 代码托管 github

  8. Django:(博客系统)使用使用mysql数据-&gt&semi;后台管理tag&sol;post&sol;category的配置

    Django后台一般是不需要人为的去开发的,因为django已经通过配置实现哪些模块是后台需要管理,如何排序,列表展示哪些列,列显示名称,是否为空(默认值),过滤条件,分页页数,列表中哪些项可编辑等等 ...

  9. 使用Django开发简单接口:文章增删改查

    目录 1.一些准备工作 安装django 创建django项目 创建博客应用(app) 2.models.py 3.django admin 登录 创建超级用户 4.修改urls.py 5.新增文章接 ...

随机推荐

  1. bootstrap-popover的配置与灵活应用

    首先罗列一下配置参数: 1.animation true/false 是否动画 2.placement 'right'/'left'/top/bottom/function(){return 'rig ...

  2. 可维护的javascript

    理论上我只能把序看完....... 第一章:基本的格式化 1.1:JSLint,JSHint查找代码中潜在的错误. 1.2:缩进:空格(2,4,8没有兼容性)和tab(不同的编辑器展现不一样),在编辑 ...

  3. html5拖拽实现

    1.需求 做一个h5正方形的拖拽框 2.分析 使用touchstart,touchmove,touchend这3个事件实现. 需要记录的数据有三组数据,分别是下图的(x0,y0),(x1,y1),(x ...

  4. 用 ROS 做内网DNS服务器

    转载:http://iliuyong.iteye.com/blog/1035692 用 ROS 做内网DNS服务器方法:1.ROS 设置IP ->DNS 选择"static" ...

  5. OpenGL 4&period;0 GLSL 实现 投影纹理映射(Projective Texture Mapping) &lpar;转&rpar;

    http://blog.csdn.net/zhuyingqingfen/article/details/19331721   分类: GLSL  投影纹理映射 (projective texture ...

  6. Servlet学习笔记&lpar;1&rpar;--第一个servlet&amp&semi;&amp&semi;三种状态对象&lpar;cookie&comma;session&comma;application&rpar;&amp&semi;&amp&semi;Servlet的生命周期

    servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...

  7. Linux下编译安装redis,详细教程

    话不多说,直接开工 准备工作: 本人测试环境:Win10 虚拟机:VM Linux:CentOS5.5 (已搭建好LNMP环境) 软件包:redis-2.6.14.tar.gz (Linux下redi ...

  8. DB2数据库代码页和实例代码页的区别(解决DB2乱码问题)

    DB2CODEPAGE:     DB2 实例级别的代码页设置,它会影响DB2相关应用程序对代码页转换时做出代码页判定.     可以通过 db2set DB2CODEPAEG= 命令将 DB2COD ...

  9. Visual Studio 和 c&num; 正则表达式

    今天集中说说VS生产环境下的正则. Visual Sturdio 2012以上版本查找替换 对于VS的正则,准确说,是VS2012之后的IDE下VS的正则. VS的查找和替换功能支持基础的正则表达式, ...

  10. &period;Net Core的Excel导入

    1.前台代码,layui模板 2.后台代码,后台实现 (1)导入 (2)数据验证 (3)将导入数据存储在数据库中 (4)定义保存导入数据接口 (5)接口的实现调用业务层 (6)业务层接口 (7)业务层 ...