【django】新闻模块——首页导航和类别显示【27】

导读:本篇文章讲解 【django】新闻模块——首页导航和类别显示【27】,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

数据准备:

a、SQL脚本录⼊新闻数据

$ mysql -h127.0.0.1 -u zl -p mangguodb</home/zhilong/Desktop/sucai/newsdata.sql

b、FastDFS服务器录⼊图⽚数据

1、准备新的图⽚数据压缩包

$ cd ~/Desktop
$ ls  
data.zip

2、删除 storage 中旧的data⽬录

$ cd /var/fdfs/storage

$ ls 
data logs 

$ rm -rf data/

$ ls 
logs

3、拷⻉新的图⽚数据压缩包到 storage,并解压

$ sudo cp ~/Desktop/data.zip ./

$ sudo unzip data.zip

在这里插入图片描述

4、查看新的data⽬录

在这里插入图片描述

首页导航和类别显示功能实现

全局上下文是整站共享的上下文数据

实现步骤:

1、在子应用下创建mycontext.py文件
2、编辑mycontext.py文件
3、配置文件中自定义全局上下文
4、模板中直接引用

新闻首页中的导航栏是公用的
在这里插入图片描述

一、创建全局上下⽂类

from .models import NewsChannel

def get_channels(request):
    '''获取导航信息'''
    channels=NewsChannel.objects.order_by('id')
    return {'channels':channels}

在这里插入图片描述

二、配置全局上下⽂

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',  # jinja2模板引擎
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'newsapp.mycontext.get_channels'	## 指定⾃定义的全局上下⽂类
            ],
            # 补充Jinja2模板引擎环境
            'environment': 'mgproject.utils.jinja2_env.environment',
        },
    },
]

三、编辑base.html

<div class="header-nav-container">
			<div class="container">
				<div class="header-nav-wapper main-menu-wapper">

					<div class="header-nav">
						<div class="container-wapper">
							<ul class="teamo-clone-mobile-menu teamo-nav main-menu " id="menu-main-menu">
                                {% for channel in channels %}
                                    <li class="menu-item m-active">
                                        <a  style="font-weight: normal;font-size: 16px;" href="{{ channel.url }}" class="teamo-menu-item-title">{{ channel.name }}</a>
                                    </li>
                                {% endfor %}

								<li class="menu-item">
									<a style="font-weight: normal;font-size: 16px;" href="/about/" class="teamo-menu-item-title"  >更多</a>
								</li>
							</ul>
						</div>
					</div>
				</div>
			</div>
		</div>
<div class="widget widget-categories">
   <h3 class="widgettitle"></h3>
	   <ul class="list-categories">
	       <li><a href="#">全部</a></li>
	       {% for category in channels[0].newscategory_set.all() %}
	           <li><a href="#">{{ category.name }}</a></li>
	       {% endfor %}
	   </ul>
</div>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74075.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!