IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> FLOG搭建(二) - 文章列表 -> 正文阅读

[Python知识库]FLOG搭建(二) - 文章列表

本章我们学习Django的MTV

MTV

MTV是Models(模型)、Templates(模板)、Views(试图)的开头首字母

接下来我们学习模型

Models - 模型

什么是模型?

模型是关于您的数据的单一的、确定的信息来源。它包含您存储的数据的基本字段和行为。通常,每个模型映射到单个数据库表。

——来自简书

接下来我们编写文章的模型

打开article/models.py,清空并输入:

from django.contrib.auth.models import User
from django.utils import timezone
from django.db import models

class ArticleModel(models.Model):
	author = models.ForeignKey(User, on_delete=models.CASCADE)  # 作者
	title = models.CharField(max_length=100)  # 标题
	content = models.TextField()  # 正文
	create = models.DateTimeField(default=timezone.now)  # 创作时间(用来排序)
	update = models.DateTimeField(auto_now=True)  # 更新时间

	class Meta:
		ordering = ('-create',)

	def __str__(self):
		return self.title
  • ForeignKey:将User与author形成一对多的关系
  • on_delete=models.CASCADE:当User删除时,一起删除他所创作的文章
  • CharField:用于存储字符串的字段
  • max_length=100:标题最长为100个字
  • TextField:用于存储大量字符的字段
  • DateTimeField:用于存储时间的字段
  • ordering = ('-create',):以创作时间为排序依据,也就是说,陈年旧帖会在数据表中的底端
  • __str__:可以简单理解为显示的信息

模型就这样编写完了

Templates?- 模板

神马是模板?

Django中的模板相当于传统MVC模式中的V,而在Django的MVT中,模板是T。在传统的前后端不分离的开发形式中,Django的模板是非常有用的,但是在今天前后端分离的大环境下,Django模板基本没有什么用处。

模板能够从视图返回的HttpResponse中获取数据,然后处理数据,进行显示。

——来自CSDN

模板路径配置

打开settings.py修改以下几行:

...

TEMPLATES = [
    {
        ...

        'DIRS': [os.path.join(BASE_DIR, 'templates')],  # 修改这里

        ...
    },
]

...

非常好理解,意思是模板的目录在templates文件夹

编写模板

在根目录下新建templates文件夹,再在里面新建article文件夹,再在article文件夹里面新建index.html,表示文章列表

现在目录结构是:

.FLOG
│  manage.py
│
├─article
│          ...
│
├─FLOG
│          ...
│
└─templates
    └─article
            index.html

编写index.html,本文先潦草地写

<!-- Django模板里的for语法 -->
{% for article in articles %}
    {{ article.title }} <!-- 获取文章的标题 -->
    <br>

<!-- 结束循环 -->
{% endfor %}

Views - 视图

打开article/views.py,输入:

from django.shortcuts import render

from .models import ArticleModel

def index(request):
	articles = ArticleModel.objects.all()

	context = { 'articles': articles }
	return render(request, 'article/index.html', context)
  • def index(request):文章列表的视图函数
  • articles = ArticleModel.objects.all():获取模型里面所有的文章
  • return render(request, 'article/index.html', context):把context传入模板index.html中,index.html用for循环把每个文章取出来

配置urls

article/urls.py

from django.urls import path

from . import views

app_name = 'article'

urlpatterns = [
	path('index/', views.index, name='index'),  # 将index/与views中的视图函数绑定
]

迁移数据库

每次更新完models.py后,不要忘记迁移数据库

打开CMD,输入以下代码

python manage.py makemigrations

python manage.py migrate

配置admin

配置admin后,可以在后台就可以修改模型中的数据

article/admin.py

from django.contrib import admin

from .models import ArticleModel

# 修改页面标题
admin.site.site_title = 'FLOG后台管理'
admin.site.site_header = 'FLOG后台管理'

# 注册ArticleModel
admin.site.register(ArticleModel)

接下来我们注册一名管理员账号,打开CMD,输入:

python manage.py createsuperuser

再按照提示,输入账号邮箱密码,没有报错就基本上创建成功了

(输入密码时,不显示是正常的,因为Django绝对不会泄露你的密码的)

激动人心的时刻

接下来我们就要运行项目了,激动不激动

打开CMD,输入:

python manage.py runserver

这时他会显示出:

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
November 09, 2021 - 19:44:59
Django version 2.2, using settings 'FLOG.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

找到倒数第二行最后的网址,这就是Django运行的网址

在浏览器里访问:127.0.0.1:8000/admin,这是后台的url

如果看到以下页面,说明成功了

输入刚才的用户名和密码,登录进去

点进上面的Article models,还记得吗?这是我们上次敲的模型

点击增加 ARTICLE MODEl,填写文章的标题等信息,再保存,就创作了一篇文章

像这样多写几篇文章,再访问127.0.0.1:8000/article/index/,这是文章列表页面

?

可以看见,刚才写的文章的标题已经出现在页面上了,可UI堪忧,下一章我们就来美化一下

本文结束,若有问题,可在本章评论或发送邮件至2912654354@qq.com?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-10 12:21:06  更:2021-11-10 12:23:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:44:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码