全面更新DjangoBlog项目:更新blog模块(models.py,views.py)、项目配置(settings.py)、新增foodBlog数据文件(4个JSON)、更新share_layout模板(6个HTML)、添加数据库备份(djangoblog_complete.sql)
parent
71b36d1851
commit
ca8cdd2ce7
Binary file not shown.
@ -0,0 +1,30 @@
|
||||
[
|
||||
{
|
||||
"model": "blog.category",
|
||||
"pk": 1,
|
||||
"fields": {
|
||||
"name": "中式菜肴"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "blog.category",
|
||||
"pk": 2,
|
||||
"fields": {
|
||||
"name": "西式美食"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "blog.category",
|
||||
"pk": 3,
|
||||
"fields": {
|
||||
"name": "甜点烘焙"
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "blog.category",
|
||||
"pk": 4,
|
||||
"fields": {
|
||||
"name": "特色小吃"
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -0,0 +1,56 @@
|
||||
[
|
||||
{
|
||||
"model": "blog.Article",
|
||||
"pk": 1,
|
||||
"fields": {
|
||||
"title": "北京胡同里的炸酱面探店",
|
||||
"body": "在北京,胡同是这座城市的脉络,藏着老北京最地道的烟火气,也藏着不少令人惊艳的美食小店。这次,我就寻到了一家隐匿在胡同深处的炸酱面店,那味道,堪称老北京炸酱面的\"天花板\"。这家店位于东四附近的一条小胡同里,没有醒目的招牌,只有一块略显斑驳的木牌,上面用毛笔字写着\"老北京炸酱面\"。若不是本地朋友极力推荐,我大概率会与它擦肩而过。跟着导航七拐八绕,穿过两侧是灰墙灰瓦的狭窄胡同,耳边是自行车铃铛声、街坊邻里的谈笑声,仿佛一下子穿越回了老北京的旧时光,而那家炸酱面店,就安静地坐落在胡同中段。推开略显厚重的木门,店内空间不大,摆着几张木质方桌和长条凳,桌面上擦得干干净净。墙壁上挂着老北京的黑白照片,有胡同的全景,有孩童嬉戏的场景,还有老北京人吃炸酱面的模样,瞬间就把人拉进了充满回忆的氛围里。店里的食客不少,有附近的老街坊,也有像我一样慕名而来的游客,大家挤在一起,却丝毫不觉得拥挤,反而因为这浓浓的烟火气,多了几分亲近感。老板是位地道的北京大爷,穿着白色的厨师服,脸上总是挂着憨厚的笑容,看到新客进来,会热情地招呼:\"里面坐,炸酱面马上好!\"等了没几分钟,一碗热腾腾的炸酱面就端上了桌。先看那炸酱,盛在一个小巧的青花瓷碗里,酱色红亮,上面还点缀着星星点点的葱花。用筷子挑起一点,能看到酱里肥瘦相间的五花肉丁,颗粒饱满,大小均匀。老板说,这酱是用五花肉丁先煸炒出油,再加入黄酱和甜面酱慢慢熬制而成,期间要不断搅拌,这样才能让酱变得浓稠,而且不会糊锅。凑近闻一闻,酱香混合着肉香,直往鼻子里钻,却一点都不觉得腻。再看面条,是店家手工制作的手擀面。面条粗细均匀,色泽洁白,根根分明。用筷子夹起一筷子,能感觉到面条很有韧性,放进嘴里一尝,果然筋道弹牙,咀嚼起来充满了小麦的清香。老板告诉我,他们的面条都是当天现做的,和面时还加了适量的盐,这样能让面条更有嚼劲。炸酱面的配菜也很丰富,一小盘里装着黄瓜丝、胡萝卜丝、豆芽、青豆、心里美萝卜丝,色彩鲜艳,看着就很有食欲。这些配菜都切得很精细,黄瓜丝脆嫩,胡萝卜丝清甜,豆芽爽脆,和筋道的面条、香浓的炸酱搭配在一起,口感层次十分丰富。按照老北京的吃法,先把配菜倒进面条里,再挖上一大勺炸酱,然后用筷子快速地搅拌均匀。随着搅拌,面条被均匀地裹上了红亮的炸酱,配菜也与面条充分融合。夹起一筷子,送进嘴里,面条的筋道、炸酱的香浓、配菜的清爽,在口腔里交织碰撞,那味道,真是绝了!每一口都能感受到老北京美食的独特魅力,仿佛能尝到时光的味道。吃完一碗,意犹未尽,连碗底的酱汁都舍不得剩下,恨不得用馒头蘸着吃掉。这家藏在胡同里的炸酱面店,没有华丽的装修,没有精致的摆盘,却用最地道的味道,征服了食客的味蕾。在这里,吃的不仅是一碗炸酱面,更是老北京的烟火气,是胡同里的人情味。如果你也喜欢老北京美食,不妨来这条胡同里,寻找这家\"宝藏小店\",相信你也会和我一样,被这碗炸酱面深深吸引。",
|
||||
"pub_time": "2025-10-08 12:00:00",
|
||||
"status": "p",
|
||||
"comment_status": "o",
|
||||
"type": "a",
|
||||
"views": 0,
|
||||
"author": 1,
|
||||
"article_order": 0,
|
||||
"show_toc": false,
|
||||
"category": 1,
|
||||
"tags": [1]
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "blog.Article",
|
||||
"pk": 2,
|
||||
"fields": {
|
||||
"title": "《意式餐厅里的味蕾漫游》",
|
||||
"body": "在城市喧嚣的角落,藏着一家充满意式风情的餐厅,推开那扇雕花木门,仿佛瞬间穿越到了亚平宁半岛。暖黄的灯光洒在铺着格子桌布的餐桌上,墙上挂着意大利各地的风景照,空气中弥漫着橄榄油、芝士与香草交融的香气,一场味蕾的漫游就此开启。首先上桌的是经典的意式番茄肉酱面。手工制作的意面粗细均匀,如丝绸般顺滑,裹满了浓郁的肉酱。肉酱由新鲜番茄慢炖而成,酸甜的汁水充分渗入肉质鲜嫩的牛肉末中,每一口都能感受到番茄的清新与牛肉的醇厚在舌尖碰撞,搭配帕玛森芝士碎,咸香与酸甜交织,层次丰富得让人着迷。接着是意式烤千层面,这简直是芝士爱好者的天堂。层层叠叠的面皮间,夹着细腻的牛肉馅、奶香十足的 béchamel 酱,最上层铺满了马苏里拉芝士。经烤箱烤制后,芝士呈现出诱人的焦黄色,轻轻用叉子一挑,芝士拉出长长的丝,入口即化,面皮的柔韧、馅料的鲜美与芝士的浓郁完美融合,每一层都带来不同的味觉惊喜。最后以一份提拉米苏收尾再合适不过。手指饼干浸润了咖啡酒,带着微微的苦涩,与上层绵密的马斯卡彭芝士奶油完美平衡,顶部撒的可可粉更添了一丝醇厚。用小勺挖上一口,冰凉丝滑的口感在口中散开,咖啡的苦、芝士的甜、饼干的绵,交织出意式甜品独有的浪漫与馥郁。在这家意式餐厅,每一道菜都像是一位意大利友人,用最地道的风味,诉说着亚平宁半岛的阳光与浪漫,让我在城市里,也能拥有一场酣畅淋漓的味蕾漫游。",
|
||||
"pub_time": "2025-10-08 12:00:00",
|
||||
"status": "p",
|
||||
"comment_status": "o",
|
||||
"type": "a",
|
||||
"views": 0,
|
||||
"author": 1,
|
||||
"article_order": 0,
|
||||
"show_toc": false,
|
||||
"category": 2,
|
||||
"tags": [3]
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "blog.Article",
|
||||
"pk": 3,
|
||||
"fields": {
|
||||
"title": "《法式甜品店的午后邂逅》",
|
||||
"body": "在繁华街区的转角处,一家名为『甜蜜时光』的法式甜品店静静伫立。推开那扇镶嵌着琉璃的蓝色木门,清脆的风铃声伴随着扑面而来的黄油香气,瞬间将人带入一个甜蜜的梦境。店内装饰着复古镜框与蕾丝窗帘,大理石台面上陈列着琳琅满目的甜品,每一款都如同精雕细琢的艺术品,令人目不暇接。首先品尝的是经典的拿破仑千层酥。三层金黄酥脆的派皮之间,均匀地夹着香草籽点缀的卡仕达酱。用叉子轻轻一压,酥皮应声碎裂,发出悦耳的咔嚓声。入口时,奶油的丝滑与派皮的酥脆在口中交织,香草的芬芳缓缓释放,甜而不腻,层次分明,仿佛在舌尖演奏了一首优雅的法国香颂。接下来是外形精致的覆盆子慕斯。光滑的镜面淋面下,是轻盈如云的慕斯体,中间包裹着酸甜的覆盆子果酱夹心。用小勺挖开,慕斯的绵密与果酱的流动感形成美妙对比。覆盆子的微酸恰到好处地平衡了慕斯的甜度,入口即化,余味带着一丝果香的清新,令人回味无穷。最后以一杯手冲伯爵茶搭配柠檬玛德琳收尾。现烤的玛德琳蛋糕散发着柠檬的清香,标志性的贝壳造型可爱迷人。蛋糕体湿润柔软,边缘带着微微的焦脆。轻咬一口,黄油的浓郁与柠檬的清爽相得益彰,再啜饮一口佛手柑香气萦绕的伯爵茶,茶香与蛋糕的甜味在口中完美融合,为这个午后画上了一个圆满的句号。在这家法式甜品店,每一道甜品都是一首诗,用细腻的口感与精致的造型,诉说着法式浪漫的甜蜜絮语,让我在忙碌的生活中,寻得了一份难得的惬意与治愈。",
|
||||
"pub_time": "2025-10-09 14:30:00",
|
||||
"status": "p",
|
||||
"comment_status": "o",
|
||||
"type": "a",
|
||||
"views": 0,
|
||||
"author": 1,
|
||||
"article_order": 0,
|
||||
"show_toc": false,
|
||||
"category": 3,
|
||||
"tags": [3]
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -1,6 +1,15 @@
|
||||
<aside id="text-2" class="widget widget_text"><h3 class="widget-title">Google AdSense</h3>
|
||||
{# Google AdSense 广告挂件 #}
|
||||
<aside id="text-2" class="widget widget_text">
|
||||
{# 挂件标题 - 显示"Google AdSense" #}
|
||||
<h3 class="widget-title">Google AdSense</h3>
|
||||
{# 文本挂件内容区域 #}
|
||||
<div class="textwidget">
|
||||
|
||||
{#
|
||||
Google AdSense 广告代码占位符
|
||||
这里会动态插入Google广告代码
|
||||
在Django模板中通过变量 GOOGLE_ADSENSE_CODES 渲染
|
||||
如果该变量为空,则不显示广告
|
||||
#}
|
||||
{{ GOOGLE_ADSENSE_CODES }}
|
||||
</div>
|
||||
</aside>
|
||||
@ -1,47 +1,47 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
{% load static %}
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<link rel="icon" href="../../favicon.ico">
|
||||
<meta name="robots" content="noindex">
|
||||
<title>{{ SITE_NAME }} | {{ SITE_DESCRIPTION }}</title>
|
||||
<link href="{% static 'account/css/account.css' %}" rel="stylesheet">
|
||||
{% load compress %}
|
||||
{% compress css %}
|
||||
<!-- Bootstrap core CSS -->
|
||||
{% load static %} {# 加载静态文件标签 #}
|
||||
<meta charset="utf-8"> {# 字符编码 #}
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> {# IE浏览器兼容模式 #}
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"> {# 响应式视口设置 #}
|
||||
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> {# 三个必须的meta标签 #}
|
||||
<meta name="description" content=""> {# 页面描述 #}
|
||||
<meta name="author" content=""> {# 作者信息 #}
|
||||
<link rel="icon" href="../../favicon.ico"> {# 网站图标 #}
|
||||
<meta name="robots" content="noindex"> {# 禁止搜索引擎索引 #}
|
||||
<title>{{ SITE_NAME }} | {{ SITE_DESCRIPTION }}</title> {# 页面标题,使用模板变量 #}
|
||||
<link href="{% static 'account/css/account.css' %}" rel="stylesheet"> {# 账户相关样式表 #}
|
||||
{% load compress %} {# 加载压缩标签 #}
|
||||
{% compress css %} {# CSS压缩块开始 #}
|
||||
<!-- Bootstrap core CSS --> {# Bootstrap核心样式 #}
|
||||
<link href="{% static 'assets/css/bootstrap.min.css' %}" rel="stylesheet">
|
||||
<link href="{% static 'blog/css/oauth_style.css' %}" rel="stylesheet">
|
||||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
||||
<link href="{% static 'blog/css/oauth_style.css' %}" rel="stylesheet"> {# OAuth登录样式 #}
|
||||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> {# IE10视口修复 #}
|
||||
<link href="{% static 'assets/css/ie10-viewport-bug-workaround.css' %}" rel="stylesheet">
|
||||
<!-- TODC Bootstrap core CSS -->
|
||||
<!-- TODC Bootstrap core CSS --> {# TODC Bootstrap样式 #}
|
||||
<link href="{% static 'assets/css/todc-bootstrap.min.css' %}" rel="stylesheet">
|
||||
<!-- Custom styles for this template -->
|
||||
<!-- Custom styles for this template --> {# 登录模板自定义样式 #}
|
||||
<link href="{% static 'assets/css/signin.css' %}" rel="stylesheet">
|
||||
{% endcompress %}
|
||||
{% compress js %}
|
||||
<script src="{% static 'assets/js/ie10-viewport-bug-workaround.js' %}"></script>
|
||||
<script src="{% static 'assets/js/ie-emulation-modes-warning.js' %}"></script>
|
||||
{% endcompress %}
|
||||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
{% endcompress %} {# CSS压缩块结束 #}
|
||||
{% compress js %} {# JS压缩块开始 #}
|
||||
<script src="{% static 'assets/js/ie10-viewport-bug-workaround.js' %}"></script> {# IE10视口修复JS #}
|
||||
<script src="{% static 'assets/js/ie-emulation-modes-warning.js' %}"></script> {# IE浏览器模式警告 #}
|
||||
{% endcompress %} {# JS压缩块结束 #}
|
||||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> {# IE8 HTML5支持 #}
|
||||
<!--[if lt IE 9]> {# IE9以下浏览器条件注释 #}
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> {# HTML5标签支持 #}
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> {# 媒体查询支持 #}
|
||||
<![endif]-->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
{% block content %}
|
||||
{% block content %} {# 内容块,子模板必须重写 #}
|
||||
{% endblock %}
|
||||
|
||||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
||||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> {# IE10视口修复注释 #}
|
||||
|
||||
</body>
|
||||
<script type="text/javascript" src="{% static 'blog/js/jquery-3.6.0.min.js' %}"></script>
|
||||
<script src="{% static 'account/js/account.js' %}" type="text/javascript"></script>
|
||||
<script type="text/javascript" src="{% static 'blog/js/jquery-3.6.0.min.js' %}"></script> {# jQuery库 #}
|
||||
<script src="{% static 'account/js/account.js' %}" type="text/javascript"></script> {# 账户相关JavaScript #}
|
||||
</html>
|
||||
Loading…
Reference in new issue