00-django | 01-构建博客目录

python Django

创建blog

进入到 manage.py 文件所在的目录(即项目根目录)下,运行 pipenv run python manage.py startapp blog 可建立一个 firstblog 应用[1]。 创建完毕后可看到目录结构如下[2]

./这个目录为根目录,也是项目的容器。

  • manage.py: 为命令行交互工具[3]
  • blog/:本次的项目名。也就是我创建的这个blog的所有文件存放的父目录
  • settings.py:该 Django 项目的配置文件[4]。 定义了Django的各种参数和路径以及显示语言等信息。
  • urls.py: 该 Django 项目的 URL 声明; 也就是网站"目录"。
  • wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口

tree

这一步只是创建了文件结构,但还没有向Django注册,在setting.py中修改INSTALLED_APPS设置

创建数据库模型

django 会把 Python 代码翻译成对应的数据库操作语言,因此我们可以不用直接写数据库的语法。

模型[5]

每个模型都是一个python类,都继承于 django.db.models.Model。 我们编辑model都在firstblog/models.py中定义即可

from django.db import models
from django.contrib.auth.models import User # Create your models here.
# 定义blog的分类
class Category(models.Model):
name = models.CharField(max_length=100) # 定义文章标签
class Tag(models.Model):
name = models.CharField(max_length=100) # 定义文章,主要有标题、正文、时间等
class Post(models.Model):
title = models.CharField(max_length=70)
body = models.TextField()
created_time = models.DateTimeField()
modified_time = models.DateTimeField()
excerpt = models.CharField(max_length=200, blank=True)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
tags = models.ManyToManyField(Tag, blank=True)
author = models.ForeignKey(User, on_delete=models.CASCADE)
  • 定义了一个名为Category的类,继承自models.Model类,且该类有个name属性
  • 定义了Tag类,有个name属性
  • 定义了Post类,有很多属性,其中blank=True表示允许空值。同时允许一对一的ForeignKey关联关系,以及多对多的ManyToManyField关联关系

然后在项目根目录下运行pipenv run python manage.py makemigrationspipenv run python manage.py migrate来写入数据库

django 通过检测应用中 migrations 目录下的文件,得知我们对数据库做了哪些操作,然后它把这些操作翻译成数据库操作语言,从而把这些操作作用于真正的数据库。

若要查看具体数据库命令可以pipenv run python manage.py sqlmigrate firstblog 0001来查看

setting.py显示数据库用的是sqlite3。数据库主要功能就是增删查改

操作数据库

pipenv run python manage.py shell打开交互shell

>>> >>> from firstblog.models import Category, Tag, Post
>>> c = Category(name='category Test') # 实例化
>>> print(c)
Category object (None)
>>> c.save() # 存入数据库
>>> t = Tag(name='tag test') #实例化
>>> t.save() #存入数据库

pipenv run python manage.py createsuperuser用于创建超级用户

Tag.objects.all()Tag.objects.get()

其中all会取出所有符合的,而get只会取1条

  1. get()
  2. 然后重新赋值
  3. 最后save()即可

  1. get()
  2. delete()即可

  1. https://docs.djangoproject.com/zh-hans/2.2/intro/tutorial01/

  2. https://www.runoob.com/django/django-first-app.html

  3. https://docs.djangoproject.com/zh-hans/2.1/ref/django-admin/

  4. https://docs.djangoproject.com/zh-hans/2.1/topics/settings/

  5. https://docs.djangoproject.com/zh-hans/2.2/topics/db/models/

00-django | 01-构建博客目录的更多相关文章

  1. 从入门到放弃,.net构建博客系统(二):依赖注入

    文章目录:<从入门到放弃,.net构建博客系统> 从入门到放弃,.net构建博客系统(一):系统构建 从入门到放弃,.net构建博客系统(二):依赖注入 上一篇中有讲到项目启动时会进行io ...

  2. MachineLN博客目录

    MachineLN博客目录 https://blog.csdn.net/u014365862/article/details/78422372 本文为博主原创文章,未经博主允许不得转载.有问题可以加微 ...

  3. Django快速搭建博客系统

    Django快速搭建博客系统 一.开发环境 Windows 7(64bit) python 3.6   https://www.python.org/ Django 2.0  https://www. ...

  4. 基于django的个人博客网站建立(三)

    基于django的个人博客网站建立(三) 前言 网站效果可点击这里访问 今天主要完成的是文章在页面的显示以及评论,留言 具体内容 首先我希望主页面是显示我的所有文章,于是在主页面的视图函数中返回了所有 ...

  5. 基于django的个人博客网站建立(一)

    基于django的个人博客网站建立(一) 前言 网站效果可点击这里访问 之前基于hexo和github page搭建过一个博客网页,后来由于换了个系统,感觉弄的有点麻烦也就没有再去管它了,最近偶然从网 ...

  6. 基于django的个人博客网站建立(六)

    基于django的个人博客网站建立(六) 前言 今天主要完成的是项目在腾讯云服务器上ubuntu16.04+django+mysql+uwsig+nginx的部署过程网站效果可点击这里访问 主要内容 ...

  7. 用Hugo在gitee上构建博客(Windows环境下)

    目录 用Hugo在gitee上构建博客(Windows环境下) 1.为什么要用gitee? 2.安装git 3.安装Hugo 4.创建远程仓库 5.搭建博客 (以下所有命令都在git bash中输入) ...

  8. [no code] Scrum Meeting 博客目录

    项目 内容 2020春季计算机学院软件工程(罗杰 任健) 2020春季计算机学院软件工程(罗杰 任健) 作业要求 Scrum Meeting博客目录 我们在这个课程的目标是 远程协同工作,采用最新技术 ...

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

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

随机推荐

  1. CSS-08-边框属性设置

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. H.264原理

    前言 H264视频压缩算法现在无疑是所有视频压缩技术中使用最广泛,最流行的.随着 x264/openh264以及ffmpeg等开源库的推出,大多数使用者无需再对H264的细节做过多的研究,这大降低了人 ...

  3. Arrays.asList()用法梳理

    Arrays.asList()用法梳理 asList概述 Arrays是java容器相关操作的工具类,asList方法将Array转换为list,是Array和List之间的桥梁. asList本质 ...

  4. Selenium(一):元素定位

    一.Selenium 8种定位方式 baidu.html <form id="form" name="f" action="/s" c ...

  5. Prometheus学习笔记之教程推荐

    最近学习K8S和基于容器的监控,发现了如下的教程质量不错,记录下来以备参考 K8S最佳实战(包括了K8S的Prometheus监控和EFK日志搜集) https://jimmysong.io/kube ...

  6. Eclipse中文语言包安装和设置中文

    对于英语水平不好或者初学者来说使用中文开发环境可以有效提高学习效率,便于快速的学习和上手,不过对于当前的技术环境学习英语还是非常有必要的,当对Eclipse掌握到一定程度还是应该多使用英语环境来开发, ...

  7. 【大白话系列】MySQL 学习总结 之 初步了解 MySQL Server 的 binlog 组件

    一.上节回顾 上节我们讲到,建议将 redo log 的刷盘策略设置为1:即提交事务时,强制将 redo log buffer 里的 redo log 刷入到磁盘后才算事务提交成功. 但是我们都知道, ...

  8. 使用Java封装一个DBUtils类(反射)

    刚开始学JavaWeb时,我是调用N个setter方法将从数据库中查询出的数据封装成JavaBean的,极其繁琐. 后来了解SpringJDBC后,发现它提供的接口非常简单,然后就想自己封装一个简单的 ...

  9. Airtest自动化测试工具介绍

    官方网站:http://airtest.netease.com/ Airtest IDE: 跨平台的UI自动化测试编辑器,适用于游戏和App,详细参见官网文档:http://airtest.netea ...

  10. Codeforces_429_B

    http://codeforces.com/problemset/problem/429/B 挺简单的题,先求出四个点到每一点的最大和,然后枚举每一点,取和最大值. 注意两条路相交的点有且只有一个,这 ...