00-django | 01-构建博客目录
00-django | 01-构建博客目录
创建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 服务器的入口

这一步只是创建了文件结构,但还没有向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 makemigrations
和pipenv 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条
改
- 先
get()
- 然后重新赋值
- 最后
save()
即可
删
- 先
get()
delete()
即可
https://docs.djangoproject.com/zh-hans/2.2/intro/tutorial01/ ↩
https://www.runoob.com/django/django-first-app.html ↩
https://docs.djangoproject.com/zh-hans/2.1/ref/django-admin/ ↩
https://docs.djangoproject.com/zh-hans/2.1/topics/settings/ ↩
https://docs.djangoproject.com/zh-hans/2.2/topics/db/models/ ↩
00-django | 01-构建博客目录的更多相关文章
- 从入门到放弃,.net构建博客系统(二):依赖注入
文章目录:<从入门到放弃,.net构建博客系统> 从入门到放弃,.net构建博客系统(一):系统构建 从入门到放弃,.net构建博客系统(二):依赖注入 上一篇中有讲到项目启动时会进行io ...
- MachineLN博客目录
MachineLN博客目录 https://blog.csdn.net/u014365862/article/details/78422372 本文为博主原创文章,未经博主允许不得转载.有问题可以加微 ...
- Django快速搭建博客系统
Django快速搭建博客系统 一.开发环境 Windows 7(64bit) python 3.6 https://www.python.org/ Django 2.0 https://www. ...
- 基于django的个人博客网站建立(三)
基于django的个人博客网站建立(三) 前言 网站效果可点击这里访问 今天主要完成的是文章在页面的显示以及评论,留言 具体内容 首先我希望主页面是显示我的所有文章,于是在主页面的视图函数中返回了所有 ...
- 基于django的个人博客网站建立(一)
基于django的个人博客网站建立(一) 前言 网站效果可点击这里访问 之前基于hexo和github page搭建过一个博客网页,后来由于换了个系统,感觉弄的有点麻烦也就没有再去管它了,最近偶然从网 ...
- 基于django的个人博客网站建立(六)
基于django的个人博客网站建立(六) 前言 今天主要完成的是项目在腾讯云服务器上ubuntu16.04+django+mysql+uwsig+nginx的部署过程网站效果可点击这里访问 主要内容 ...
- 用Hugo在gitee上构建博客(Windows环境下)
目录 用Hugo在gitee上构建博客(Windows环境下) 1.为什么要用gitee? 2.安装git 3.安装Hugo 4.创建远程仓库 5.搭建博客 (以下所有命令都在git bash中输入) ...
- [no code] Scrum Meeting 博客目录
项目 内容 2020春季计算机学院软件工程(罗杰 任健) 2020春季计算机学院软件工程(罗杰 任健) 作业要求 Scrum Meeting博客目录 我们在这个课程的目标是 远程协同工作,采用最新技术 ...
- python关于Django搭建简单博客项目(教程)
由于csdn各种django blog博文都有或多或少的bug,所以我决定自己写一篇,先附上教程,详解在另一篇博文里,为了便于大家复制粘贴,本文代码尽量不使用图片. 源代码及解析文章请在我的githu ...
随机推荐
- os模块常用方法笔记
os模块是程序和系统文件之间的交互接口,可以实现对文件的创建.删除等功能,以下对os模块的功能做一个笔记,方便以后学习和查找. import os os.getcwd() #获取当前工作目录,即当前p ...
- php--->底层的运行机制与数据结构原理
PHP 底层的运行机制与数据结构原理 1. PHP的设计理念及特点 多进程模型:由于PHP是多进程模型,不同请求间互不干涉,这样保证了一个请求挂掉不会对全盘服务造成影响,当然,随着时代发展,PHP也早 ...
- 腾讯云ubuntu服务器无法以root身份ssh连接
在腾讯云上拿到的Ubuntu主机分配给的用户是ubuntu用户,并不是root用户,而阿里云上拿到的Ubuntu主机分配给的用户就是root用户.如果没有root用户权限做事情会变得麻烦,每次做什么都 ...
- 跟Evan学Sprign编程思想 | Spring注解编程模式【译】
Spring注解编程模式 概况 多年来,Spring Framework不断发展对注解.元注解和组合注解的支持. 本文档旨在帮助开发人员(Spring的最终用户以及Spring Framework和S ...
- 20190708三人开黑CF模拟赛
7月8号晚上8点和两位巨佬开了一场虚拟cf: [Helvetic Coding Contest 2018 online mirror (teams allowed, unrated)] 我这么蔡,只A ...
- [python]Mongodb
文档: http://api.mongodb.com/python/current/tutorial.html 安装: 官网直接下载安装, mac上brew安装的下载太慢, 打算手动安装 使用: 开启 ...
- Comb使用2
只需添加如下内容 AndroidManifest中添加如下 不要忘记修改application ID与Comb对应 最好不要采用将combSDK lib文件添加到工程中否则可能连接不了Comb 如果添 ...
- Codeforces 1064D Labyrinth(双端队列BFS)
题意: 给一个图,"*"不可以走,给你一个起点,限制向左走L次,向右走R次,上下不限制,问你最多可以走到多少个格子 思路: BFS,每次将上下走的策略加入队首,左右加入队尾,(相当 ...
- React+wangeditor+node富文本处理带图片上传
最近有个需求出现在我的视野中,因为我的另外的博客需要上传文章,但是我不想每次都在我的数据库中慢慢的修改格式,所以我另做了一个后台去编辑文本后发送给服务器,那么这里就涉及到两点,一个是富文本,一个是需要 ...
- LNK2019
原因:inline函数被外部文件的函数调用时,必须将inline函数定义在头文件中,不能定义在cpp文件中.