上次讲解了一下各py文件的内容,但比较乱,所以这次整理了一个顺序版。

源代码请在http://github/Cheng0829/mysite自行下载

mysite:

db.sqlite3:数据库文件。在cmd输入python manage.py migrate连接数据库时生成(migrate:迁移)。

manage.py:在cmd输入django-admin startprojectmysite创建django项目时,manage.py会被自动生成在项目根目录下.用以对django项目实现命令行操作.

mysite/blog:

pycache:在__pycache__文件夹下存放的是各py文件预编译形成的pyc二进制文件

migrations:文件夹下是在cmd输入python manage.py makemigrations生成的简历文件,内含mysite主要内容。

templates:文件夹下放置index.html模板文件,用于显示页面。

{% for blog in blog_list %}
<h>{{ blog.title }}</h2>
<p>{{ blog.timestamp }}</p>
<p>{{ blog.body }}</p>
{% endfor %}

是Django的模板语言

渲染变量使用双大括号{{ }},渲染标签则使用双大括号{% %}

{% for i in blog_list %} # blog_list 为后端传递给模板的变量,类似于字典推导。
<p>{{blog.XXX }}</p> #输出blog.XXX,<h2>把字体加粗,然后加大到2号(数字越小字越大,<h>为正常)
{% endfor %} #使用endfor来表示循环结束

models.py:

models.py是blog应用的核心文件之一,是定义blog数据结构的地方

from django.db import models
class BlogsPost(models.Model):
title=models.CharField(max_length=120)
body=models.TextField()
timestamp=models.DateTimeField()

XXXField:字段类型(Field types)

CharField:

class CharField(max_length=None,[**options])

它是一个字符串字段,对小字符串和大字符串都适用。对于更大的文本,应该使用TextField 。

CharField 有一个必须传入的参数:max_length,字段的最大字符数。

DateTimeField

class DateTimeField([auto_now=False, auto_now_add=False, **options])

该字段利用 datetime.datetime 实例表示日期和时间。

TextField

class TextField([**options]) #用于处理大文本字段,理论上可无限。

admin.py

from django.contrib import admin
from blog.models import BlogsPost
class BlogsPostAdmin(admin.ModelAdmin):
list_display = ['title', 'body', 'timestamp']
admin.site.register(BlogsPost, BlogsPostAdmin)

建立blogpostadmin类,并用register方法使之与blogpost连接,信息一一对应。

其中,django.contrib包:是一个强大的功能包,是Django的标准库。其中有

admin : 自动化的站点管理工具,和auth : Django的用户验证框架。

app.py:

from django.apps import AppConfig
class BlogConfig(AppConfig):
name = 'blog'

django的project由多个app组成。project的设置由setting指定,而每个app的设置由AppConfig类指定。

AppConfig的属性有:

1.通过__init__初始化的属性:

name:app的路径名

module:app的模块

2.通过继承AppConfig的自定义类属性.

views.py:

    from django.shortcuts import render
from blog.models import BlogsPost
# Create your views here.
def blog_index(request):
blog_list = BlogsPost.objects.all()
return render(request,'index.html', {'blog_list': blog_list})

其中blog_list = BlogsPost.objects.all()的作用是从数据库获取所有该类对象,即获取所有数据。

render方法可接收三个参数,一是request参数,二是待渲染的html模板文件,三是保存具体数据的字典参数。它的作用就是将数据填充进模板文件,最后把结果返回给浏览器

mysite/mysite:

wsgi.py:

WSGI,全称’’Python Web Server Gateway Interface’’,意为PythonWeb服务器网关接口,是Python应用程序或框架和Web服务器之间的一种接口,WSGI没有官方的实现, 因此WSGI更像一个协议. 只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行。

从Django的角度看,一个页面具有三个典型的组件:

1.模板(model):模板负责把传递进来的信息显示出来。

2.视图(view):视图负责从数据库获取需要显示的信息。

3.URL模式:它负责把收到的请求和你的视图函数匹配,有时候也会向视图传递一些参数。

urls.py:

from django.conf.urls import url
from django.contrib import admin
from blog import views
urlpatterns = [
url('admin/', admin.site.urls),
url(r'^blog/$',views.blog_index,name='index'),
]

其中,r’^blog/$’表示地址为127.0.0.1:8000/blog,views.blog_index是引用views中的blog_index函数,利用html文件,name =‘index’则说明利用的是index.html文件。

源代码请在http://github/Cheng0829/mysite自行下载

python django搭建一个简易博客的解析(按照文件顺序逐一讲解)的更多相关文章

  1. 这几天有django和python做了一个多用户博客系统(可选择模板)

    这几天有django和python做了一个多用户博客系统(可选择模板) 没完成,先分享下 断断续续2周时间吧,用django做了一个多用户博客系统,现在还没有做完,做分享下,以后等完善了再慢慢说 做的 ...

  2. django 简易博客开发 3 静态文件、from 应用与自定义

    首先还是贴一下源代码地址  https://github.com/goodspeedcheng/sblog 上一篇博客我们介绍了 django 如何在views中使用templates以及一些常用的数 ...

  3. 如何搭建一个独立博客——简明Github Pages与Hexo教程

    摘要:这是一篇很详尽的独立博客搭建教程,里面介绍了域名注册.DNS设置.github和Hexo设置等过程,这是我写得最长的一篇教程.我想将我搭建独立博客的过程在一篇文章中尽可能详细地写出来,希望能给后 ...

  4. 怎么在阿里云搭建一个WordPress博客(超详细教程)

    想以正确的方式启动一个 WordPress 博客吗?我知道,这可能是一个令人恐惧的想法 -- 其实你并不孤单.但是,在帮助很多用户创建博客之后,我决定编写一份详细的指南,让任何没有技术知识的人都能拥有 ...

  5. 基于hexo+github搭建一个独立博客

    一直听说用hexo搭建一个拥有自己域名的博客是很酷炫的事情~,在这十一花上半个小时整个hexo博客岂不美哉. 使用Hexo吸引我的是,其简单优雅, 而且风格多变, 适合程序员搭建个人博客,而且支持多平 ...

  6. 通过django搭建一个简易的web页面(实现数据的查询、添加、修改、删除)

    一.创建django项目 通过命令创建: django-admin startproject 项目名称 创建app应用 python3 manage.py startapp 应用名 #这里manage ...

  7. django 搭建自己的博客

    原文链接:http://www.errdev.com/post/4/ 每一个爱折腾的程序员都有自己的博客,好吧,虽然我不太喜欢写博客,但是这样骚包的想法却不断涌现.博客园虽好,可以没有完全的掌控感,搭 ...

  8. 用django搭建一个简易blog系统(翻译)(三)

    06. Connecting the Django admin to the blog app Django 本身就带有一个应用叫作Admin,而且它是一个很好的工具 在这一部分,我们将要激活admi ...

  9. 用django搭建一个简易blog系统(翻译)(一)

    Django 入门 原始网址: http://www.creativebloq.com/netmag/get-started-django-7132932 代码:https://github.com/ ...

随机推荐

  1. React报错之JSX element type does not have any construct or call signatures

    正文从这开始~ 总览 当我们试图将元素或react组件作为属性传递给另一个组件,但是属性的类型声明错误时,会产生"JSX element type does not have any con ...

  2. 非常全的一份Python爬虫的Xpath博文

    非常全的一份Python爬虫的Xpath博文 Xpath 是 python 爬虫过程中非常重要的一个用来定位的一种语法. 一.开始使用 首先我们需要得到一个 HTML 源代码,用来模拟爬取网页中的源代 ...

  3. Excel 单元格的相对引用和绝对引用

    引用方式 单元格的地址由该单元格所在的行号和列标构成,一个引用代表工作表上的一个或者一组单元格,指明公式中数据所在的位置. 编号 消费记录 价格 1 乒乓球 1 2 火腿肠 2 3 乒乓球 1 4 羽 ...

  4. Silk语言-中国人自己的开源编程语言

    什么是Silk Silk语言是一门完全独立自主开发的跨平台动态类型编程语言,绝非"木兰"等套壳语言. Silk简单易学,30分钟即可掌握全部语法,让你像Python一样简单地写C/ ...

  5. Windows API 学习

    Windows API学习 以下都是我个人一些理解,笔者不太了解windows开发,如有错误请告知,非常感谢,一切以microsoft官方文档为准. https://docs.microsoft.co ...

  6. 【MIDO】乐理基础 与 python - 从零开始到编写柱式和弦与分解和弦

    本篇文章从律学开始,从十二平均律出发,介绍一些基础必要的乐理知识,然后编写python文件,输出和弦音频文件. 乐理知识部分: 一.律学简述(temperament)   1.概论   律学,又称&q ...

  7. 【manim】3b1b的"Almost" Fourier Transform复刻

    最近在做Fourier Transform的内容,记录一下今天下午的成果. 本文代码全部自行编写,需要math and music项目完整工程可以在gayhub上获取.(现在还没弄完,就先不发了.) ...

  8. 如何将原生微信小程序页面改成原生VUE框架的H5页面

    项目背景: 公司为了实现小程序与H5页面共同覆盖,全面推广.特此想将已有的小程序进行快速改造上线(二周内),研发出H5版本.目前公司前端技术较为薄弱,现有的技术解决方案还停留在JSP. 问题: 如何将 ...

  9. 游标长时间open导致表无法vacuum问题

    一.问题描述 用户在实际中可能会碰到类似以下 dead rows 无法 vacuum的问题,一个可能的原因是由于游标未结束的原因. test=# vacuum(verbose) t1; INFO: v ...

  10. Typora Markdown 安装包

    下载地址: 链接:https://pan.baidu.com/s/1wy0Ik95AjM5WjSC3nzOzqA 提取码:f26j 复制这段内容后打开百度网盘手机App,操作更方便哦 已更新至最新版0 ...