Django2.1 博客项目初入,基本的数据展示

1 创建应用

1.1 cmd在项目目录下创建博客APP

python manage.py startapp blog

2.2 把博客APP添加到项目的settings的app列表下,在大约四十行里添加自己的app名称。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #自定义的app
    'helloworld'
    'blog',
]
  1. app计划页面
    (1)主页,显示所有的博客标题,可以点击某个标题来查看内容。
    在这里插入图片描述
    (2)点击后显示详细的内容
    在这里插入图片描述
    (3)新建文章或者修改文章都会跳到一个表单的区域,在这里插入图片描述
    在这里插入图片描述

2 创建数据模型

2.1 分析这个APP依赖的数据

(1)博客标题,最大长度不超过30个字符,默认是title。
(2)博客内容,不能为空。

2.2. 在blog/models.py下创建一个模型类,表示数据库里的一张表。

具体的字段各个属性可以在官方网站上看到,默认用的是自带的sqlite数据库。
(1)代码部分

class Article(models.Model):
    # 创建文章数据表
    title=models.CharField(max_length=32,default="Title")
    content=models.TextField(null=True)

(2)分析:
<1>这个类对应着一张名字叫做blog_article的数据表。(默认是app名称_类名称小写创建表名)
<2>每个静态属性表示表的属性。
<3>这个类的实例表示数据表中的一条数据,也就是一个数据元素。实例的属性表示一个数据项。实例的属性与表的属性同名。
(3)数据迁移,把这个这个模型类的信息自动转化为SQL传入到数据库里

python manage.py makemigrations
python manage.py migrate

2.3 通过pycharm的自带的可视化工具可以查看数据库里已经有了一张表。

(1)安装pycharm的DB browser插件。创建一个连接。
(2)查看数据库可以发现有了刚才创建的数据表blog_article,还有一些数据库用来管理Django的用户和一些日志信息。默认创建了叫做id的主键,从1开始的增长。
在这里插入图片描述

2.4 在管理员的角度看这些数据

(1)创建管理员,按照要求填写信息。

python manage.py createsuperuser

(2)使得这张数据表对于管理员可见,在blog/admin里把数据表注册显示到管理页面上。

from .models import Article
# Register your models here.
admin.site.register(Article)

(3)登陆管理员账户查看数据
在这里插入图片描述

2.5 创建一些文章并且查看

(1)管理页面上创建两篇文章,成功在这里插入图片描述
(2)在DB Browser插件上sql语句查看数据表。在这里插入图片描述
(3)注意对数据库的操作只能有一个连接,也就是说admin操作数据时必须断开可视化工具对数据库的连接。

2.6 优化数据表对于管理员的显示

(1)admin现在看Article根本不知道哪个的标题是哪一个,他只是根据创建文章的先后排列的。因此我们可以设置一些东西可以让管理员更加舒服。
(2)

3. 数据显示

3.1 配置URL

(1) 一级url配置,项目urls.py里。表示blog/后面再添加东西到blog.urls这个模块里找

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')),
]

(2)二级url配置,app的urls.py里,需要自己新建一个blog下的urls.py。

from django.urls import path,re_path
from . import views

urlpatterns = [
    # 主页面
    path("index/",views.index),
    # 每个博客的详细页面
    re_path("(?P<article_id>[0-9]+)",views.detail),
]

(3)注意两种url定义的方式
<1>path函数,第一个参数接受字符串,这个字符串通常以/结尾,第二个参数表示用来渲染页面的函数。
<2>re_path函数,与path不同的就是第一个参数,可以使用正则表达式。并且(?P<变量名>正则表达式)会把括号里的正则表达式匹配的字符串子串当作参数传入到渲染页面函数里。

3.2 视图函数

(1)blog/views.py视图渲染函数。
<1>第一个函数渲染的是主页,只接受HTTP请求即可。
<2>第二个函数渲染的是博客内容的详细页面,需要接受HTTP请求,同时接受文章的编号。这个编号从1开始自然数增加。

from django.shortcuts import render
from .models import  Article
# Create your views here.
def index(reqeust):
    articles=Article.objects.all()
    return render(reqeust,'blog/index.html',{"articles":articles})

def detail(request,article_id):
    article = Article.objects.get(pk=article_id)
    return render(request, "blog/detail.html", {"article": article})

(2)render函数
对页面进行渲染,第一个参数表示http请求,第二个参数表示DTL文件,第三个参数表示传入的数据,以字典形式传入。
(3)models里数据的获取。
通过objects这个静态属性获取,相当于对数据表的管理器,对他调用一些方法相当于对于这个表执行SQL语句。
<1>all()获得所有的数据,返回一个序列,序列的元素表示一条数据元素,是一个对象。
<2>get(pk=)获得主键是特定值的数据,返回一条数据元素,是一个对象。

3.3 模板

(1)DTL,由HTML与Django组合而成的一种模板语言,本质上还是html,其中融入了一些python语法使得可以进行变量处理和使用逻辑判断,实现了一个html文件传入不同的参数会有不同的效果
(2)在blog下新建一个templates/blog文件夹。创建两个DTL文件,用于展示主页数据和详细页面的数据。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>主页</h1>
{% for article in articles %}
    <a href="" style="font-size:36px">{{ article.title }}</a>
    <br/>
{% endfor %}
<a href="">新建文章</a>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>{{ article.title }}</h1>
<p>{{ article.content }}</p>
<a href=""}>修改文章</a>
</body>
</html>

(3)DTL语句
<1>显示变量内容
{{ 变量名 }}
<2>循环遍历序列中的内容。
{% for i in 序列 %}
语句
{% endfor %}

4 查看效果

4. 1 查看主页 http://127.0.0.1:8000/blog/index/

在这里插入图片描述

4.2 查看详细页面 http://127.0.0.1:8000/blog/1在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本门课程重实战,将基础知识拆解到项目里,让你在项目情境里学知识。 这样的学习方式能让你保持兴趣、充满动力,时刻知道学的东西能用在哪、能怎么用。 平时不明白的知识点,放在项目里去理解就恍然大悟了。   一、融汇贯通 本视频采用了前后端分离的开发模式,前端使用Vue.js+Element UI实现了Web页面的呈现,后端使用Python 的Django框架实现了数据访问的接口,前端通过Axios访问后端接口获得数据。在学习完本章节后,真正理解前后端的各自承担的工作。   二、贴近实战 本系列课程为练手项目实战:学生管理系统v4.0的开发,项目包含了如下几个内容:项目的总体介绍、基本功能的演示、Vuejs的初始化、Element UI的使用、在Django实现针对数据的增删改查的接口、在Vuejs实现前端增删改查的调用、实现文件的上传、实现表格的分页、实现导出数据到Excel、实现通过Excel导入数据、实现针对表格的批量化操作等等,所有的功能都通过演示完成、贴近了实战   三、课程亮点 在本案例,最大的亮点在于前后端做了分离,真正理解前后端的各自承担的工作。前端如何和后端交互   适合人群: 1、有Python语言基础、web前端基础,想要深入学习Python Web框架的朋友; 2、有Django基础,但是想学习企业级项目实战的朋友; 3、有MySQL数据库基础的朋友  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值