是否有必要使用UUID作为PK



我还是web开发的新手,但我知道使用UUID作为模块的主键被认为是一种好的做法?

我正在Django中构建一个应用程序,它在URL中显示pk。例如CCD_ 1。然后通过匹配PK.找到该url的用户

将顺序整数作为PK的主要问题是什么?似乎是斯塔克佛流干的。

这不是django内置的原因吗?

除非有充分的理由,否则你应该使用UUID作为主键。然而,你真正想要的是在没有UUID的情况下获得更好的URL结构,我同意这一点。

我遇到过这个问题,我通过制作一个独特的鼻涕虫来解决它。下面我要用的例子是一个不同标题的博客。帖子应该是唯一的,这样就不会有URL冲突:

# urls.py
# url pretty straightforward, get the post slug from the url and pass it into the view
urlpatterns = patterns('',
    url(r'(?P<post_slug>[w]+)/$', views.post, name="post"),
)

# views.py
# get the post object based on the slug passed in from the url
def post(request, post_slug):
    '''
    individual blog page
    '''
    post = Post.objects.get(Post, slug=post_slug)
    return render(request, "template.html", {'post':post})

# models.py
# save the unique slug to be used based on the title
from django.db import models
from django.utils.text import slugify
class Post(models.Model):
    '''
    Blog Post data which has a unique slug field
    '''
    title = models.CharField(max_length=50)
    slug = models.SlugField(unique=True, blank=True)
    def save(self, *args, **kwargs):
        # add identifying slug field on save
        self.slug = slugify(self.title) # can also make a custom slugify to take out hyphens
        super(Post, self).save(*args, **kwargs)

如果你有了它,你的URL结构就可以工作,并且URL中没有UUID。它看起来更干净,只是需要一点魔法。

最新更新