如何使用django在网站的所有部分中显示一些数据?

时间:2017-07-17 17:25:31

标签: django django-templates django-views

我是Django的新手,正在使用这个框架开发我的第一个网站。这样的网站必须在屏幕右上角的所有部分都有自己的社交网络链接。为了实现这一目标,我在models.py中创建了两个字段:社交网络链接和fontawesome图标。

网站的每个部分都使用模板呈现,所有模板仅从一个基本模板扩展。该基本模板必须包含社交网络链接

我知道如何在所有部分中显示这些链接的唯一方法是将它们传递到每个视图中的模板。这是针对DRY(不要重复自己)的规则。有没有办法只传递一次,并让所有网站都可以看到它?

1 个答案:

答案 0 :(得分:0)

override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) // compiler error on line below UIAppearance.appearance().setTitleTextAttributes([NSAttributedStringKey.font: font], for: UIControlState.normal) }

只有两条规则......

  1. 只使用一个Writing your own context processors
  2. 参数
  3. 必须返回字典
  4. <强> context_processors.py

    request

    更新您的settings.py以关注

    def database_social_links(request):
        social_links = SocialLinks.objects.all()
        return {'social_links': social_links }
    

    在你的base.html或其他......

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [
                # insert your TEMPLATE_DIRS here
            ],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    # Insert your TEMPLATE_CONTEXT_PROCESSORS here or use this
                    'your_app.context_processors.database_social_links',
                    # list if you haven't customized them:
                    'django.contrib.auth.context_processors.auth',
                    'django.template.context_processors.debug',
                    'django.template.context_processors.i18n',
                    'django.template.context_processors.media',
                    'django.template.context_processors.static',
                    'django.template.context_processors.tz',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]