阅读:61
目录
Django是一个的python开源Web应用框架,是一个遵循 MVC 设计模式的框架。MVC是Model、View、Controller三个单词的简写,分别代表模型、视图、控制器。
环境搭建:略
项目结构:
数据库设计:有道云笔记
django的一切操作,视图、后台都是以Model为基础。根据表结构,构造出需要的model即可:尤其需要注意:外键、一对一、一对多等关系
此处以文章举例
blog/models.py(图片双击放大)
在cmd使用如下命令,进行数据库转移
python3 manage.py makemigrations
python3 manage.py migrate
转移之后,会在app/migrations包下生成数据迁移记录,可检查是否迁移成功
admin后台管理可以让我们快速便捷管理数据。
此处需要注册表信息:
blog/admin.py
使用fieldsets可自定义编辑表单。 注册表信息之后:即可登录http://localhost:8000/admin/进行可视化操作
登录后如图所示:
前面已经讲了MVT中的模型和视图、本章内容为模板相关。
简单来说,可以把模板理解为HTML,再高阶一些就是VUE等框架。
在blog/views.py对要进行操作的mode进行实例化,然后将其渲染模板中
此处以博客首页为例:
# 首页
def index(request):
allarticle = Article.objects.all().order_by('-id')[0:10]
# 常规ORM操作
context = { 'allarticle': allarticle, }
# 带参数渲染到模板中
return render(request, 'index.html', locals())
在HTML模板中:
<div>
<ul>
<h4>所有文章:</h4>
{% for article in allarticle %}
<li>{{ article.title }}</li>
{% endfor %}
</ul>
</div>
渲染成功后结果如下:
由前面的章节可以看出,如果我要将内容渲染到网页,需要模型、视图、模板共同作用。
此也对应了MVT的设计理念。
前面都是单个举例,根据单例延伸即可
博客在使用翻页功能中,遇到页面报错:RelatedObjectDoesNotExist at /show-6.html
首先定位到了报错点,如下,无非就是通过ORM查询:查询条件为:创建时间小于当前文章,且为同类型
next_blog = Article.objects.filter\ (created_time__lt=show.created_time,category=show.category_id).last()
其等价于为:
select * from article where created_time<"xxxx"" and category_id ="xx"
然后用navicat去数据库查询本条记录,发现报错文章的“category_id”为空。‘
解决办法嘛:将category在前端或者后端标记必填
#首页
#文章详情页
第一次开发练手,还有很多不好的地方,理想是后面以前后端分离重新完善一下