什么是Django?

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

当前路径创建工程

django-admin startproject myblog

  

  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里

  

  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开发简单博客流程的更多相关文章

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

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

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

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

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

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

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

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

  5. python关于Django搭建简单博客项目(详解一)

    上一篇我们说了如何搭建简易博客网站,下面我们来进行详细解答.本文没有特定顺序,请结合上一篇和源代码参照学习. 相关源代码和解析请参看:https://github.com/Cheng0829/mysi ...

  6. python关于Django搭建简单博客项目(教程)

    由于csdn各种django blog博文都有或多或少的bug,所以我决定自己写一篇,先附上教程,详解在另一篇博文里,为了便于大家复制粘贴,本文代码尽量不使用图片. 源代码及解析文章请在我的githu ...

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

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

  8. python关于Django搭建简单博客项目 详解二-setting.py

    这一篇我们来讲解setting.py,具体内容以注释形式写入到下面的setting.py代码中,篇幅所限已把官方所给英文注释删除. 全部源代码和详解请参看http://github.com/Cheng ...

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

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

随机推荐

  1. KVM原理及使用

    Qemu 和 Qemu-kvm Qemu: http://qemu-project.org/Download Qemu-kvm:https://sourceforge.net/projects/kvm ...

  2. Java8中HashMap扩容算法小计

    Java8的HashMap扩容过程主要就是集中在resize()方法中 final Node<K,V>[] resize() { // ...省略不重要的 } 其中,当HashMap扩容完 ...

  3. Android Studio 之 数据存活【2】,返回桌面切换回来,内容还保存着

    使用ViewMode SavedState来使得ViewModel在系统杀死后台进程的时候得以存活. 本集使用到的库,需要在gradle中添加: implementation 'androidx.li ...

  4. 终于明白为什么要加 final 关键字了!

    阅读本文大概需要 2.8 分钟. 来源: www.jianshu.com/p/acc8d9a67d0c 在开发过程中,由于习惯的原因,我们可能对某种编程语言的一些特性习以为常,特别是只用一种语言作为日 ...

  5. Http、Socket、WebSocket之间联系与区别

    WebSocket和Socket区别 可以把WebSocket想象成HTTP(应用层),HTTP和Socket什么关系,WebSocket和Socket就是什么关系. HTTP 协议有一个缺陷:通信只 ...

  6. Gaze Estimation学习笔记(1)-Appearance-Based Gaze Estimation in the Wild

    目录 前言 简介 论文概述 论文主要内容 MPIIGaze数据集 引入CNN的新Gaze Estimation方法 人脸对齐与3D头部姿态判断 归一化 使用CNN进行视线检测 论文作者进行的实验及结果 ...

  7. 【Node.js】Node.js的安装

    Node.js的简介 简单的说,Node.js 是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件 ...

  8. Logstash配置以服务方式运行

    Logstash官网最新版下载地址以及YUM源:https://www.elastic.co/cn/downloads/logstash Logstash最常见的运行方式即命令行运行 ./bin/lo ...

  9. odoo开发笔记 -- 还原数据库后,异常:ir_attachment: IOError: [Errno 2] No such file or directory: u'/var/...'

    场景描述: 恢复Odoo数据后,抛出错误导致无法进入页面 -- ::, INFO aeo odoo.addons.base.ir.ir_attachment: _read_file reading / ...

  10. Could not create connection to database server. Attempted reconnect 3 times. Giving up.

    报出这个错误,可能原因: 1.检查MySQL数据库服务是否正常(包含检查服务名和密码),如果不正常,修复至正常为止: 2.maven工程中导入的mysql的jar版本和你的MySQL版本不相符,必须相 ...