Django模板语言中的自定义方法filter过滤器实现web网页的瀑布流

当向数据库中写入创建表,并插入中文时,遇到了报错:

ERROR SqlExceptionHelper:147 - Incorrect string value: ‘\xE6\xB2\xA1\xE5\x90\x83…’ for column ‘others’ at row 1
org.springframework.orm.jpa.JpaSystemException: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement

解决方法:

1.自动新建的这张表的character set 没有设置成utf8.

2.服务器向数据库中传输的数据格式没有设置成uft8。因此,先进入数据库:

(1)在cmd命令窗口输入 mysql -hlocalhost -uroot -p回车 进入mysql数据库;

(2)查看表中的各字段的属性: show full columns from table_name;

如果看到每个字段都是lati, 则执行以下语句:

alter table table_name convert to character set utf8 collate utf8_general_ci;

(3)同时检查一些变量collation_connection、collation_database、collation_server是否都是utf8_general_ci

检查的语句为:show variable like ‘collation%’;

修改的语句为:set collation_connection=utf8_general_ci

(4)同时检查一些变量character的相关变量是否为utf8_general_ci

检查的语句为:show variable like ‘character%’;

修改语句如:set character_set_database=utf8;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以使用Django的装饰器 @register.filter(name='custom_filter') 来注册自定义过滤器。这个装饰器可以把函数注册为一个过滤器并指定过滤器的名称。使用方法如下: 1. 在app下的一个文件新建.py文件,定义一个过滤器函数。 2. 在app下的一个文件新建一个名为“templatetags”的文件夹,将步骤1定义的.py文件放入其,并在该目录下新建一个空文件__init__.py。 3. 在模板使用{% load 文件名 %}加载刚才定义的过滤器。 4. 在模板使用{{ 变量|过滤器 }}调用过滤器。 示例代码: ```python # my_filter.py from django import template register = template.Library() @register.filter(name='add_str') def add_str(value, arg): return str(value) + str(arg) ``` ```html <!-- 模板使用 --> {% load my_filter %} {{ 'hello'|add_str:'world' }} ``` 这样就会输出“helloworld”。 ### 回答2: 在Django使用自定义过滤器,首先需要将过滤器注册到Django过滤器。以下是注册过滤器的步骤: 1. 在Django项目的一个应用创建一个名为"templatetags"的文件夹。如果该文件夹已经存在,则跳过此步骤。 2. 在"templatetags"文件夹创建一个名为"__init__.py"的空文件,以确保该文件夹被认为是一个模块。 3. 在"templatetags"文件夹创建一个名为"custom_filters.py"的文件。这个文件将包含我们自定义过滤器函数。 4. 在"custom_filters.py"文件编写我们的自定义过滤器函数。函数必须接受至少一个参数,并返回处理后的值。 5. 在"custom_filters.py"文件导入Django过滤器库,通过引入`from django import template`。 6. 在"custom_filters.py"文件使用`register = template.Library()`来创建一个过滤器注册实例。 7. 在"custom_filters.py"文件使用`@register.filter(name='filter_name')`装饰器来注册我们的过滤器函数,并指定过滤器的名称。 8. 在"custom_filters.py"文件保存我们的自定义过滤器函数。 9. 在我们的Django模板,需要首先加载我们的自定义过滤器。通过在模板的顶部使用`{% load custom_filters %}`加载我们的自定义过滤器模块。 10. 在模板使用我们的自定义过滤器。通过在变量后使用管道符号(|)和过滤器名称来调用自定义过滤器,例如`{{ variable|filter_name }}`。 通过以上步骤,我们就可以在Django注册和使用我们的自定义过滤器了。确保在注册、命名和调用过程保持一致,以确保过滤器正常工作。 ### 回答3: 在Django使用自定义过滤器,需要首先在你的应用程序(app)创建一个名为templatetags的文件夹,并在该文件夹下创建一个Python模块(.py文件),用于存放你的自定义过滤器代码。 在该模块,你需要导入`django.template.library`模块,并使用`register.filter`装饰器来注册你的自定义过滤器函数。 以下是一个示例: ```python from django import template register = template.Library() @register.filter def my_filter(value, arg): # 这里是你的自定义过滤器代码 # value 是传递给过滤器的对象 # arg 是过滤器的参数 # 返回经过处理后的值 return processed_value ``` 在这个示例,我们创建了一个名为my_filter自定义过滤器函数。它接收两个参数:value和arg。在函数,你可以根据自己的需求对value进行处理,并返回处理后的值。 完成自定义过滤器函数的编写后,你需要在模板使用该过滤器。首先,在你要使用该过滤器的地方,确保在模板顶部进行导入: ```python {% load 自定义过滤器模块名称 %} ``` 然后,就可以在模板使用这个过滤器了: ```python {{ value|my_filter:arg }} ``` 在上面的示例,value是要进行处理的对象,my_filter是你的自定义过滤器函数名称,arg是过滤器的参数(可选)。 通过以上步骤,你就可以在Django成功注册和使用自定义过滤器了。确保在注册过滤器后重新启动你的Django应用程序,以使过滤器生效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值