具有url预览的高级slug字段。

django-slug-preview的Python项目详细描述


django slug预览

提供实时url预览的高级slug字段。

这是受到wordpress提供的“permalink”预览的启发。 虽然看起来还没有那么花哨,但这是django项目的一个良好开端。 欢迎改进!

https://github.com/edoburu/django-slug-preview/raw/master/docs/images/slugpreview1.png

安装

首先安装模块,最好是在虚拟环境中。 它可以从pypi安装:

pip install django-slug-preview

或者可以安装当前文件夹进行开发:

pip install -e .

slug_preview添加到INSTALLED_APPS

INSTALLED_APPS += (
    'slug_preview',
)

用法

  • 在模型中使用slug_preview.models.SlugPreviewField,而不是标准的models.SlugField
  • 在表单中添加slug_preview.forms.SlugPreviewFormMixin

例如:

from django.db import models
from slug_preview.models import SlugPreviewField

class MyModel(models.Model):
    slug = SlugPreviewField(_("Slug"))

在管理员中,您可以使用SlugPreviewModelForm快捷方式:

from django.contrib import admin
from django import forms
from slug_preview.forms import SlugPreviewModelForm

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    form = SlugPreviewModelForm

在自定义表单中,直接使用SlugPreviewFormMixin

from django import forms
from slug_preview.forms import SlugPreviewFormMixin
from .models import MyModel

class MyModelForm(SlugPreviewFormMixin, forms.ModelForm):
    class Meta:
        model = MyModel

特殊型号网址

当模型有一个自定义的url布局(不仅仅是/{slug}/)时,您可以在模型中添加一个get_absolute_url_format()方法。 例如:

from django.db import models
from slug_preview.models import SlugPreviewField

class Page(models.Model):
    parent = models.ForeignKey('self')
    slug = SlugPreviewField(_("Slug"))
    # ...


    def get_absolute_url(self):
        if self.parent_id:
            return "{0}{1}/".format(self.parent.get_absolute_url(), self.slug)
        else:
            return "/{0}/".format(self.slug)

    def get_absolute_url_format(self):
        if self.parent_id:
            return "{0}{{slug}}/".format(self.parent.get_absolute_url())
        else:
            return "/{slug}/"

对于博客,也可以添加/blog/{year}/{month}/格式:

from django.core.urlresolvers import reverse
from django.db import models
from django.utils.timezone import now
from slug_preview.models import SlugPreviewField

class Article(models.Model):
    slug = SlugPreviewField(_("Slug"))
    pubdate = models.DateTimeField(default=now)
    # ...


    def get_absolute_url(self):
        root = reverse('article_list')
        return "{root}/{year}/{month}/{slug}/".format(
            root=reverse('article_list').rstrip('/'),
            year=self.pubdate..strftime('%Y'),
            monthy=self.pubdate..strftime('%M'),
            slug=self.slug
        )

    def get_absolute_url_format(self):
        root = reverse('article_list')
        pubdate = self.pubdate or now()
        return "{root}/{year}/{month}/{{slug}}/".format(
            root=reverse('article_list').rstrip('/'),
            year=pubdate.strftime('%Y'),
            monthy=pubdate.strftime('%M'),
        )

改进此软件包

此模块也可用于其他项目。 万一你有什么不喜欢的, 或者认为它不够灵活,请让我们知道。 我们很乐意改进它!也欢迎拉取请求。:-)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何序列化数字?   java如何用我的Mainclass扩展ListActivity类和Fragment类?   JavaJersey、Jackson和JAXRS发布了多种JSON格式   java如何使用JavaFXKeyCombination覆盖系统默认的键盘快捷键,如Ctrl+C、Ctrl+V?   java Jersey类路径扫描示例Jersey。配置。服务器供应商。类路径   java什么样的数据结构可以作为一个数组,但在同一索引下给定多个值时会自动增长到第二维度?   java如何序列化非持久实体中的嵌套PersistentEntityResource   协议缓冲区我可以让protoc在Java中生成int数组吗?   在GregorianCalendar ArrayList Java中添加日期元素   从html模板动态生成pdf文件并用java生成目录   java Gridgain 6.5.5开源多个节点速度较慢。。?   java如何检查数组中所有整数的不相等性?   java在Eclipse中,如何多次运行JUnit测试用例   java侦听器不能处理特定的片段   java不是一个声明?(蓝色J)   找不到Attributer类型的PersonId的java定义