当前位置:首页 > Python技术文章 > 如何优雅地处理Django中的favicon.ico图标详解

处理Django中的favicon.ico图标实例方法

  • 发布时间:
  • 作者:码农之家原创
  • 点击:282

这篇文章主要知识点是关于favicon、django、项目加小图标、Django添加favicon.ico图标的示例代码 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下相关资源

Django开发宝典

本书是对Python Django开发全过程解析,使读者能够掌握项目的开发流程。由浅入深地带领读者进行Django的开发,最终使读者掌握项目的开发流程,从而运用于自己的项目开发中

查看详情

如何优雅地处理Django中的favicon.ico图标详解

前言

favicon.ico是网站的图标也是网站的头像,简单来说,就是让我们的网站更加好看。

本文主要给大家介绍了关于优雅处理Django中favicon.ico图标的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧

起步

默认情况下,浏览器会访问网站 "/favicon.ico" 这个地址获取网站的图标。如果没有配置的话,Django 会返回一个 404 错误。这对于强迫症的人来说,真的很烦。我们有现有的图标,且按开发规范一般存放 static/ 下。

网上的方法

网上找了大概两种处理方式,但都不够优雅。

方法一:使用重定向

在项目的 urls.py 中添加规则:

from django.urls import path
from django.views.generic.base import RedirectView

urlpatterns=[
 ...
 path('favicon.ico', RedirectView.as_view(url='static/img/favicon.ico')),  
]

这种方式我认为是最不好的一种方式,它会让浏览器产生一个新的请求。

方法二:指定图标地址

这种方法就是告诉浏览器,网站图片的正确地址,因此需要在模板中的头部指定:

{% load staticfiles %}
<head lang="zh">
 <meta charset="UTF-8">
 <link rel="shortcut icon" href="{%static " rel="external nofollow" img/favicon.ico" %}" /> <!-- 添加这行 -->
 <title></title>
</head>

这种方法也挺好的。但我还是想从 /favicon.ico 这个地址中解决这个问题。

最优雅的方式

django 有自己的静态文件的处理方法,那就可以设置 url 规则,返回某个静态文件的:

from django.contrib.staticfiles.views import serve

urlpatterns = [
 ...
 path('favicon.ico', serve, {'path': 'img/favicon.ico'}),
]

从根本上解决还不反弹,很棒,很好很强大。

Django添加favicon.ico图标的示例代码

所谓favicon,即Favorites Icon的缩写,让浏览器的收藏夹中除显示相应的标题外,还以图标的方式区别不同的网站。

默认情况下,浏览器访问一个网站的时候,同时还会向服务器请求“/favicon.ico”这个URL,目的是获取网站的图标。

若是没有配置的话,Django就会返回一个404错误,并且浏览器接收到这个404错误后不会显示出来,一般不会被察觉。

但是服务器要是开启日志记录的话,这错误就会一直记录下来,累积一大堆无用的记录。

添加favicon.ico图标的方法有两种

首先先制作一个ico文件,使用PS或者某些在线生成ico的网站即可,我是在下面的网站生成的,当然,你也可以用其他网站!

http://tools.jb51.net/aideddesign/ico_img

下载后将此文件命名为“favicon.ico”后放在static/blog/img/下

方法一、在url.py中添加:

from Django.views.generic.base import RedirectView

urlpatterns=[
  ...
  # favicon.cio
  url(r'^favicon\.ico$', RedirectView.as_view(url=r'static/blog/img/favicon.ico')),   
]

把请求"/favicon.ico",指向static/blog/img/favicon.ico 这个文件,重新部署一下项目就可以看到你想要的效果。

方法二、在页面直接重定向:

<head>
  <meta charset="UTF-8">
  
  {% load staticfiles %}
  
    ...
    <link rel="shortcut icon" href="{%static " rel="external nofollow" blog/img/favicon.ico" %}" />
    ...

</head>

刷新一下,就可以看到效果了哦!!!

记住,一定要把他放在全局head标签里面,这样才会获得应有的效果!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于Python的全部知识点内容总结,大家还可以在下方相关文章里找到python求最大值最小值的实、 Python工具整理推荐、 Python调用C# Com dll组件的方、 等python文章进一步学习,感谢大家的阅读和支持。

上一篇:python不以科学计数法输出的实例方法总结

下一篇:Python快速查找list中相同部分的实例代码

展开 +

收起 -

相关内容
跟老齐学Python:Django实战

《跟老齐学Python:Django实战》是以Python为基础进行Web应用开发的进阶读物。适合已经具有Python基础技能、进行Web应用开发的读者。感兴趣的小伙伴们可以下载参考一下

查看详情
Python高效开发实战:Django、Tornado、Flask、Twisted

也许你听说过全栈工程师,他们善于设计系统架构,精通数据库建模、通用网络协议、后端并发处理、前端界面设计,在学术研究或工程项目上能独当一面。通过对Python及其周边Web框架的学习

查看详情
Python新手使用Django架站的16堂课

本书作者台湾大师带你活用Django Web Framework快速构建移动网站,以16堂课来介绍Python新手使用Django架站的要点,可作为Python Django的初学者的参考书籍

查看详情
深度学习入门:基于Python的理论与实现

本书是深度学习真正意义上的入门书,深入浅出地剖析了深度学习的原理和相关技术。书中使用Python3,尽量不依赖外部库或工具,从基本的数学知识出发,带领读者从零创建一个经典的深度学

查看详情
我的Python世界(Minecraft我的世界)

Python是一种表述型、面向对象编程、动态性数据类型的gao级编程语言,它具备丰富多彩和强劲的库,可以把用别的語言(特别是在是C/C++)制做的各种各样控制模块很轻轻松松地联接一起。这

查看详情
物联网Python开发实战

本书在介绍物联网的组成、典型架构和应用的基础上,采用实例代码讲述python编程基础和应用实例,感兴趣的可以下载学习

查看详情
学习笔记
网友NO.212518

Django使用redis缓存服务器的实现代码示例

redis相信大家都很熟悉了,和memcached一样是一个高性能的key-value数据库,至于什么是缓存服务器,度娘都有很明白的介绍了,我在这里就不一一介绍了。 那我们一般什么情况下才会使用缓存服务器呢?可不是什么情况都需要的哦,一般来说是在需要频繁对一个字段读取的时候才会需要将这个字段放入到缓存服务器上,而且由于key-value数据库一般只是放很简单的数据,所以在选择保存的对象的时候要注意选择好。 下面我就来介绍如何在Django中配置使用redis数据库,首先是先安装redis了,在Ubuntu中执行下面这句命令: #安装Redis服务器端 sudo apt-get install redis-server 然后为了能在Django中使用redis,还需要安装redis for Django的插件: pip install django-redis 这是一个开源的项目,github地址是https://github.com/niwibe/django-redis,感谢作者。 那么现在就是在Django的settings中配置……

网友NO.410420

代码详解django中数据库设置

首先定义数据库的表名和字段 启动mysql数据库 bash mysql.server start 安装pymysql pip install pymysql PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 在_init_.py文件中加入如下代码: import pymysql pymysql.install_as_MySQLdb() 新建数据库 mysql -u root -p 登录root show databases 显示数据库 create database mysite 创建数据库 settings.py配置数据库: 1)django默认使用的是sqlite数据库 2)修改settings.py文件的DATABASES选项进行数据库的配置 3)设置想要使用的数据库。比如mysql DATABASES = {'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mysite', 'USER': 'root', 'PASSWORD': '12345678', 'HOST': 'localhost', 'PORT': '3306',}} 创建app 一个项目中可以创建多个app 使用命令 python manage.py startapp myApp,后生成myApp目录以及相关文件。 admin.py 站点配置 models.py 定义模型 views.py 定义视图 激活app 1)在s……

网友NO.653948

Django基础教程总结

对于所有的web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。 一个简单的web程序: #!/usr/bin/env python#coding:utf-8 import socket def handle_request(client): buf = client.recv(1024) client.send(HTTP/1.1 200 OK\r\n\r\n) client.send(Hello, Seven) def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('localhost',8000)) sock.listen(5) while True: connection, address = sock.accept() handle_request(connection) connection.close() if __name__ == '__main__': main() python web程序一般会分为服务器程序和应用程序。服务器程序负责对socket服务器进行封装,并在请求到来时对请求的各种数据进行整理。应用程序则负责具体的逻辑处理。为了方便应用程序的开发,就出现了众多的web框架。例如Django,Flask,web.py等。 不同的框架有不同的开发方式,但是无论如何,开发出的应用程序都要和服务器程序配……

<
1
>

Copyright 2018-2020 xz577.com 码农之家

本站所有电子书资源不再提供下载地址,只分享来路

免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除

版权投诉 / 书籍推广 / 赞助:QQ:520161757