搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
AllinToyou
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
AndroidStudio实现用户登录注册界面代码(二)_andriod studio 登录系统 cadn
2
如何降低aigc总体疑似度_aigc疑似度
3
iOS--第二章block
4
字节跳动最新开源AI 视频生成框架「MagicAnimate」,一张照片就能生成跳舞视频_magic animate使用
5
云计算是否正在“杀死”运维
6
[python]使用xml.etree.ElementTree遍历xml所有节点_xml.etree.elementtree遍历所有标签
7
使用Fastmonkey进行iosMonkey测试初探
8
将View转换为Bitmap的2种方式
9
NAPI机制分析_谈谈napi机制
10
【HarmonyOS】【DevEco Studio】NOTE04:How to Jump to a Page(页面间的跳转)
当前位置:
article
> 正文
转载django slugfield 中文解决方式
作者:AllinToyou | 2024-03-07 06:32:04
赞
踩
from uuslug import slugify
原文http://www.weiguda.com/blog/1/
1. 总体介绍
django-uuslug是一个很方便的将中文转化成拼音slug的插件. 通过使用django-uuslug, 可以保确保slug是唯一的, 并且都是unicode编码的.
django中的slug是什么: slug是一个新闻属性, django中的slug是指有效URL的一部分, 能使URL更加清晰易懂. 比如有这样一篇文章, 标题是"那个13岁的孩子", 它的URL地址是"/news/na-ge-13-sui-de-hai-zi", 后面这一部分便是slug.
2. 如何安装
使用VirtualEnv在Bash shell中:
pip install django-uuslug
3. 如何使用
a. 将任意编码转为相应的unicode:
from uuslug import slugify
txt = "This is a test ---"
r = slugify(txt)
self.assertEquals(r, "this-is-a-test")
txt = "This -- is a ## test ---"
r = slugify(txt)
self.assertEquals(r, "this-is-a-test")
txt = 'C\'est déjà l\'été.'
r = slugify(txt)
self.assertEquals(r, "cest-deja-lete")
txt = '你好我是中国人'
r = slugify(txt)
self.assertEquals(r, "nin-hao-wo-shi-zhong-guo-ren")
txt = 'Компьютер'
r = slugify(txt)
self.assertEquals(r, "kompiuter")
txt = 'jaja---lol-méméméoo--a'
r = slugify(txt)
self.assertEquals(r, "jaja-lol-mememeoo-a")
txt = 'jaja---lol-méméméoo--a'
r = slugify(txt, max_length=9)
self.assertEquals(r, "jaja-lol")
txt = 'jaja---lol-méméméoo--a'
r = slugify(txt, max_length=15)
self.assertEquals(r, "jaja-lol-mememe")
txt = 'jaja---lol-méméméoo--a'
r = slugify(txt, max_length=50)
self.assertEquals(r, "jaja-lol-mememeoo-a")
txt = 'jaja---lol-méméméoo--a'
r = slugify(txt, max_length=15, word_boundary=True)
self.assertEquals(r, "jaja-lol-a")
txt = 'jaja---lol-méméméoo--a'
r = slugify(txt, max_length=19, word_boundary=True)
self.assertEquals(r, "jaja-lol-mememeoo")
txt = 'jaja---lol-méméméoo--a'
r = slugify(txt, max_length=20, word_boundary=True)
self.assertEquals(r, "jaja-lol-mememeoo-a")
txt = 'jaja---lol-méméméoo--a'
r = slugify(txt, max_length=20, word_boundary=True, separator=".")
self.assertEquals(r, "jaja.lol.mememeoo.a")
txt = 'jaja---lol-méméméoo--a'
r = slugify(txt, max_length=20, word_boundary=True, separator="ZZZZZZ")
self.assertEquals(r, "jajaZZZZZZlolZZZZZZmememeooZZZZZZa")
b. 唯一性测试, 重写model.py中的save()方法:
from django.db import models
from uuslug import uuslug
class CoolSlug(models.Model):
name = models.CharField(max_length=100)
slug = models.CharField(max_length=200)
def __unicode__(self):
return self.name
def save(self, *args, **kwargs):
# self.slug = uuslug(self.name, instance=self, separator="_") # optional non-dash separator
self.slug = uuslug(self.name, instance=self)
super(CoolSlug, self).save(*args, **kwargs)
c. 指定起始数字:
self.slug = uuslug(self.name, instance=self, start_no=2)
# 第二个slug就会以-2结尾
name = "john"
c = CoolSlug.objects.create(name=name)
c.save()
print c.slug # => "john"
c1 = CoolSlug.objects.create(name=name)
c1.save()
print c1.slug # => "john-1"
c2 = CoolSlug.objects.create(name=name)
c2.save()
print c2.slug # => "john-2"
d. 限制slug的长短:
class SmartTruncatedSlug(models.Model):
name = models.CharField(max_length=19)
slug = models.CharField(max_length=19)
def __unicode__(self):
return self.name
def save(self, *args, **kwargs):
self.slug = uuslug(self.name, instance=self, start_no=9, max_length=19, word_boundary=True)
super(SmartTruncatedSlug, self).save(*args, **kwargs)
# 测试
name = 'jaja---lol-méméméoo--a'
obj = SmartTruncatedSlug.objects.create(name=name)
print obj.slug # "jaja-lol-mememeoo" --- where 19 is max_length (first slug, no duplicate yet)
obj = SmartTruncatedSlug.objects.create(name=name)
print obj.slug # "jaja-lol-mememeoo-9" --- where 19 is max_length, start_no = 9
obj = SmartTruncatedSlug.objects.create(name=name)
print obj.slug # "jaja-lol-mememeo-10" -- where 19 is max_length, smart appending "-10"
4. 其他资源
最后给出该项目的Github地址: django-uuslug, 方便各位自己查看.
原文链接: http://www.weiguda.com/blog/1/
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/AllinToyou/article/detail/204047
推荐阅读
article
Python
web实战 | 使用
Django
搭建 Web
应用程序
【干货】_
python
d...
从社交媒体到在线购物,从在线银行到在线医疗,Web
应用程序
为人们提供了方便快捷的服务。Web
应用程序
已经成为了人们日...
赞
踩
article
Django
构建动态
前端
页面
详解
_
django
自动
生成
前段
页面
...
Django
是一个强大的 Python Web 框架,广泛用于后端开发。然而,它也支持直接使用 HTML, CSS, ...
赞
踩
article
【
web
开发】6、
Django
(1)_
django
是
前
端
还
是
后
端
...
一、
Django
是
什么?二、使用步骤1.安装
Django
2.创建项目3.创建app4.快速上手5.模板继承数据库操作1....
赞
踩
article
Django
+
Vue
+
Element
UI前后端分离搭建以及部署流程_
django
elementu...
一、简介
Django
Rest Framework只提供后端Api接口
Vue
+
Element
作为前端请求接口获取数据并渲...
赞
踩
article
【转】整合
Django
+
Vue
.js 框架快速搭建
web
项目
_
r'
add
_
book
$...
转自:https://cloud.tencent.com/developer/article/1005607可能遇到的问...
赞
踩
article
Django
SimpleUI
与
vue
的完美结合_
django
vue
...
django
与
django
simple ui的黄金组合,可以在短时间内快速开发出一套完整的admin后台管理页。但是...
赞
踩
article
python
前端
框架
django
_整合
Django
+ Vue.js
框架
快速搭建 web 项目...
一、 背景在工作中我们经常须要构件一些基于web的项目,例如内部测试平台、运维系统等。本篇主要介绍如何使用后端Djang...
赞
踩
article
Python
Django
-Web
框架
_
django
web
框架
...
Django
是由
Python
编写的一个开源 Web 应用
框架
,
Python
+
Django
是快速开发、设计、部...
赞
踩
article
Python
3
+
Django
3
结合
Vue
.
js
框架构建前后端分离Web开发平台
实战
...
学习全文大概需要 12分钟,内容
实战
性较强。1. 前言本篇将基于
Python
3
.7+
Django
3
.0结合
Vue
.j...
赞
踩
article
Django
-
rest
-
framework
框架_
django
rest
framework
...
在REST
framework
中,提供了序列化器Serialzier的定义,可以帮助我们简化序列化与反序列化的过程,不仅...
赞
踩
article
Django
- 使用
CSS
框架协助
前端
布局
_
danjgo
+
css
前端
...
目录部署Bootstrap引入bootstrap基本模板根据bootstrap官网的基本模板补全base.html文件调...
赞
踩
article
Django
web
开发
系列(六)
前端
页面
之
Bootstrap
...
一 前言在上节已经了解到,使用模板语法可以实现把后台返回的动态数据渲染到
前端
页面
,但这个
页面
太单调、没有css的装扮,可...
赞
踩
article
django
模板
遍历字典及
list
_
danjgo
模板
list
数组遍历...
{{ key }}_
danjgo
模板
list
数组遍历
danjgo
模板
list
数组遍历 ...
赞
踩
article
Django -
使用
CSS
美化
页面
_
django
网页
css
...
目录
页面
设计导航栏设计修改首页和博客的前端显示添加首页
页面
使用
CSS
(层叠样式表)让个人博客网站设置成一个块设置导航栏里...
赞
踩
article
Django
- 基本
应用
结构
_
django
中的
应用
结构
...
基本
应用
结构
访问多个页面
Django
Appmodels.py : 模型安装
应用
同步数据库把
应用
添加到
Django
管理后...
赞
踩
article
Django
-
模板
嵌套
_
django
视图
嵌套
...
目录
模板
嵌套
创建通用
模板
使用通用
模板
三级目录
模板
嵌套
创建通用
模板
把相同的部分提出, 放到一个文件里base.html[详细]
-->
赞
踩
article
Django
学习(一)
django
+
html
+
css
+
js
环境配置_
django
如何结合
html
+...
1、pycharm配置好
django
环境2、直接利用pycharm创建工程或者进入你想要保存文件的目录下利用“djang...
赞
踩
article
Django
中如何使用
css
详细
解析
_
django
解析
本地
css
...
按照如下的设置来做就可以了,讲的非常清楚:settings.py:MEDIA
_
ROOT = 'C:/Server/Pro...
赞
踩
article
Django -
ContentType
_
django
content
type
...
目录什么是
ContentType
ContentType
组件应用查看
ContentType
的内容
ContentType
实...
赞
踩
article
Django
-
HttpRequest
_
django
request.
http
_host...
目录
HttpRequest
HttpRequest
对象的属性
HttpRequest
对象的方法当一个页面被请求时, Djan...
赞
踩
相关标签
python
django
webkit
前端
vue.js
python前端框架django
后端
css
javascript
ViewUI
开发语言