标签: slug

为什么在Django中使用SlugField()?

Django models.SlugField()有助于我们创建一些很酷的网址.我的问题是为什么将它指定为一个字段

假设我有这个模型

 class Blog(models.Model):
    title = models.CharField()
Run Code Online (Sandbox Code Playgroud)

如果我想添加slug,我可以使用

 class Blog(models.Model):
    title = models.CharField()

    def title_slug(self):
       return slugify(self.title)
Run Code Online (Sandbox Code Playgroud)

在我可以使用的网址中

(r'^blog/(?P<id>\d+)/(?P<slug>[-\w]+)/$', 'app.views.blog_view'),
Run Code Online (Sandbox Code Playgroud)

并在意见中

def blog_view(request, id ,slug):
    get_object_or_404(Blog, pk=id)
    ...
Run Code Online (Sandbox Code Playgroud)

网址看起来像

example.com/blog/23/why-iam-here/

有三件事让我采用这种方法

  1. Slug字段没有隐含的唯一性.
  2. get_object_or_404(Blog, pk=id)必须快于get_object_or_404(Blog, slug=slug).
  3. 将slug字段添加到现有模型涉及数据迁移.

那为什么SlugField()?除了动态生成段塞的成本外,上述方法有哪些缺点?

django slug

41
推荐指数
2
解决办法
3万
查看次数

如何在ASP.NET MVC中创建友好的URL?

如何在ASP.NET MVC框架中生成友好的URL?例如,我们有一个如下所示的URL:

http://site/catalogue/BrowseByStyleLevel/1

1是研究级别的Id(在这种情况下是更高的)来浏览,但我想以与StackOverflow相同的方式重新格式化URL.

例如,这两个网址会将您带到同一个地方:

/sf/ask/8352641/

/sf/ask/8352641/

编辑:网址的友好部分被称为slug.

c# asp.net-mvc friendly-url asp.net-mvc-routing slug

39
推荐指数
1
解决办法
2万
查看次数

如何使Django slugify与Unicode字符串正常工作?

我该怎么做才能防止slugify过滤器剥离非ASCII字母数字字符?(我正在使用Django 1.0.2)

cnprog.com有问题URL中的中文字符,所以我查看了他们的代码.他们没有slugify在模板中使用,而是在Question模型中调用此方法来获取永久链接

def get_absolute_url(self):
    return '%s%s' % (reverse('question', args=[self.id]), self.title)
Run Code Online (Sandbox Code Playgroud)

他们是否在诋毁网址?

python django unicode django-templates slug

37
推荐指数
6
解决办法
2万
查看次数

用于生成slugs的Java代码/库(用于漂亮的URL)

诸如Rails和Django之类的Web框架内置了对"slugs"的支持,后者用于生成可读和SEO友好的URL:

团状串典型地只包含的字符a-z,0-9-且可因此在不URL转义写入(认为"富%20巴").

我正在寻找一个Java slug函数,给出任何有效的Unicode字符串将返回一个slug表示(a-z,0-9-).

一个微不足道的slug函数将是这样的:

return input.toLowerCase().replaceAll("[^a-z0-9-]", "");
Run Code Online (Sandbox Code Playgroud)

但是,此实现不会处理国际化和重音(ë> e).解决这个问题的一种方法是列举所有特殊情况,但这不是很优雅.我正在寻找更好的思考和一般的东西.

我的问题:

  • 在Java中生成Django/Rails类型slugs的最通用/最实用的方法是什么?

java regex seo url-rewriting slug

37
推荐指数
4
解决办法
2万
查看次数

有没有简单的方法从CharField填充SlugField?

class Foo(models.Model):
    title = models.CharField(max_length=20)
    slug = models.SlugField()
Run Code Online (Sandbox Code Playgroud)

是否有一种内置的方法可以根据标题让slug字段自动填充?也许在管理员和管理员之外.

python django slug

35
推荐指数
3
解决办法
2万
查看次数

将非ASCII字符(变音符号,重音符号...)转换为最接近的ASCII等效符号(段塞创建)

我正在寻找JavaScriptASCII字符串中的非字符转换为最接近的等价物的方法,类似于PHP iconv函数的作用.例如,如果输入字符串是Rånades på Skyttis i Ö-vik,则应将其转换为Ranades pa skyttis i o-vik.我看了看phpjsiconv不包括在内.

是否可以在JavaScript中执行此类转换,如果是这样的话?

javascript ascii converter character-encoding slug

24
推荐指数
1
解决办法
8312
查看次数

PHP中的URL友好用户名?

在我的PHP站点上,当前用户使用电子邮件地址和密码登录.我想添加一个用户名,他们设置的用户名将是唯一的,他们无法更改.我想知道如何使这个名称没有空格并在URL中工作,所以我可以使用用户名链接到配置文件和其他东西.如果用户名中有空格,则应添加下划线jason_davis.我不确定最好的方法吗?

php string friendly-url slug

23
推荐指数
1
解决办法
2万
查看次数

如何在Django中创建一个独特的slug

我正在尝试在Django中创建一个独特的slug,以便我可以通过这样的URL访问帖子:http: //www.example.com/buy-a-new-bike_Boston-MA-02111_2

相关型号:

class ZipCode(models.Model):
    zipcode = models.CharField(max_length=5)
    city = models.CharField(max_length=64)
    statecode = models.CharField(max_length=32)

class Need(models.Model):
    title = models.CharField(max_length=50)
    us_zip = models.CharField(max_length=5)
    slug = ?????

    def get_city():
        zip = ZipCode.objects.get(zipcode=self.us_zip)
        city = "%s, %s %s" % (zip.city, zip.statecode, zip.zipcode)
        return city
Run Code Online (Sandbox Code Playgroud)

ZipCode记录示例:

  • zipcode ="02111"
  • city ="波士顿"
  • statecode ="MA"

样本需求记录:

  • title ="买一辆新自行车"
  • us_zip ="02111"
  • slug ="buy-a-new-bike_Boston-MA-02111_2"(需要)

有关如何创建这个独特的slug的任何提示?它的组成是:

  • Need.title +"_"+ Need.get_city()+"_"+一个可选的递增整数,使其唯一.所有空格都应替换为" - ".

注意:上面我想要的slug假定slug"buy-a-new-bike_Boston-MA-02111"已经存在,这就是它附加了"_2"以使其独一无二.

我尝试过django-extensions,但它似乎只需要一个字段或字段来构造独特的slug.我需要传入get_city()函数以及标题和城市之间的"_"连接符.有人解决了这个并愿意分享?

谢谢!

UPDATE

我已经在其UUIDField中使用了django-extensions,所以如果它也可用于其AutoSlugField会很好!

django django-models slug

19
推荐指数
4
解决办法
2万
查看次数

如何从字符串创建一个SEO友好的划线分隔的URL?

拿一个如下的字符串:

在C#中:如何在逗号分隔的字符串列表中围绕字符串添加"引号"?

并将其转换为:

在-C-怎么办,我加引号围绕头字符串IN-A-逗号分隔的列表的串

要求:

  • 用短划线分隔每个单词并删除所有标点符号(考虑到并非所有单词都用空格分隔.)
  • 函数占用最大长度,并使所有令牌低于该最大长度.示例:ToSeoFriendly("hello world hello world", 14)return"hello-world"
  • 所有单词都转换为小写.

另请注意,是否应该有最小长度?

language-agnostic string seo slug

17
推荐指数
2
解决办法
9392
查看次数

生成SEO友好URL(slugs)

定义

来自维基百科:

蛞蝓是识别使用人类可读关键字的页面的URL的一部分.

为了使用户更容易键入URL,通常也会删除或替换特殊字符.例如,重音字符通常被英文字母中的字母取代; 标点符号通常被删除; 和空格(必须编码为%20或+)由短划线( - )或下划线(_)代替,这些更美观.

上下文

我开发了一个照片共享网站,用户可以在其上传,分享和查看照片.

所有页面都是自动生成的,没有我对标题的控制.因为照片的标题或用户的名称可能包含重音字符或空格,我需要一个功能来自动创建slugs并保持可读的URL.

我创建了以下函数来替换重音字符(èçëçî),删除标点符号和错误字符(#@&〜^!)并以破折号转换空格.

问题

  • 你觉得这个功能怎么样?
  • 你知道创建slu的任何其他功能吗?

:

function sluggable($str) {

    $before = array(
        'àáâãäåòóôõöøèéêëðçìíîïùúûüñšž',
        '/[^a-z0-9\s]/',
        array('/\s/', '/--+/', '/---+/')
    );
 
    $after = array(
        'aaaaaaooooooeeeeeciiiiuuuunsz',
        '',
        '-'
    );

    $str = strtolower($str);
    $str = strtr($str, $before[0], $after[0]);
    $str = preg_replace($before[1], $after[1], $str);
    $str = trim($str);
    $str = preg_replace($before[2], $after[2], $str);
 
    return $str;
}
Run Code Online (Sandbox Code Playgroud)

php string seo friendly-url slug

17
推荐指数
5
解决办法
5万
查看次数